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


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