Cakephp saveField dans model ne fonctionne pas

Par The-Devil, il y a 10 ans


Bonjour, je réalise actuellement un petit blog et j'essai lors de l'enregistrement d'un article de mettre dans la colonne 'img_principal' de la table article le fichier. Et je souhaite faire cela dans la méthode callback After save de mon model.
Voici ce que j'ai fait pour le moment:

public function afterSave($created, $options = array()) { if(!empty($this->data['Article']['img_principal_file']['file']['tmp_name'])){ //Définition du répertoire $directory = IMAGES . 'articles'. DS .'images_principal'; //Récupération de l'id de l'article $id_article = $this->getLastInsertID(); //Enregistrement de l'image principal dans le dossier images principal if(move_uploaded_file($this->data['Article']['img_principal_file']['file']['tmp_name'], $directory . DS . $id_article . '.'.$this->data['Article']['img_principal_file']['extension'])){ $this->id = $id_article; //On met à jour le champ img_principal $this->saveField('img_principal', $id_article.'.'.$this->data['Article']['img_principal_file']['extension']); } else{ //ON envoi un flag pour une erreur $this->error = true; } } }

ET CELA NE FAIT ABSOLUMENT RIEN... le champ 'img_principal' n'est jamais mis à jour...
Quelqu'un saurait pourquoi ??

Meric d'avance

2 réponses

Tango-charly, il y a 10 ans

OK ON A BIEN COMPRIT !

Est-ce que le fichier est bien déplacé ?

Tu as oublié l'index['file'] non ?

$this->data['Article']['img_principal_file']['file']['tmp_name'], $directory . DS . $id_article . '.'
$this->data['Article']['img_principal_file']['extension']

The-Devil, il y a 10 ans

Bonjour Tango-Charly,
Oui le fichieer est bien déplacé. Non, il n'y a pas d'index file à ajouter.
J'ai finalement changé de manière et ai injecté le système d'ajout de l'image directement dans la méthode du controller juste après le $this->model->save();

Meric quand même