Bonjour,
Voila je rencontre un petit problème avec mon code.
Je cherche simplement à faire un upload d'une image pour l'associer à un article via une url stockée dans un champ photo_file.
J'ai utilisé le plugin de grafikart : https://github.com/Grafikart/CakePHP-Upload
J'ai une erreur en validant mon formulaire que je n'avais pas avant d'inclure l'upload:
Error: SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value
j'ai effectué un debug de $this->request->data que voici :
array(
'name' => 'ee',
'content' => 'egge',
'code' => '522',
'price' => '01',
'category_id' => '1',
'submit' => '',
'Article' => array(
'photo_file' => array(
'name' => '',
'type' => '',
'tmp_name' => '',
'error' => (int) 4,
'size' => (int) 0
)
)
)
Ma function add dans mon controller :
public function add() {
debug($this->request->data);
die();
if ($this->request->is('post')) {
$this->Article->create();
if ($this->Article->save($this->request->data)) {
$this->Flash->success(__('L\'article a bien été ajouté au stock.'));
return $this->redirect(array('action' => 'index'));
}
$this->Flash->error(__('Impossible d\'ajouter l\'article au stock.'));
}
}
Ainsi que mon modèle:
class Article extends AppModel
{
public $belongsTo = array(
'Category' => array(
'counterCache' => true
)
);
public $actsAs = array(
'Upload.Upload' => array(
'fields' => array(
'photo' => 'img/photos/:id1000/:id'
)
)
);
}
J'ai l'impression qu'en fait il n'enregistre aucune donnée en bdd et du coup j'ai cette erreur SQL.
Pourtant je fais un save de mon data qui lui est pourtant plein.
Si vous avez une idée je suis preneur.
Merci beaucoup.
Là, tu as une erreur car il essaie d'enregistrer un fichier (je suppose :D) sans valeur dans name et tu as besoin d'une valeur en BDD.
Pour régler le problème, name doit avec "NULL" par défaut
Alors, j'ai essayé de mettre seulement le champ photo en NULL et ça fonctionne .. :)
Merci.
ah ! si, c'est juste que j'ai chargé la page sans rien pour montrer l'erreur. Mais c'est pareil avec les champs pleins.