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
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']
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