Bonjour,
Je rencontre un petit soucis avec le plugin média du tuto, en effet, lors de l'édition d'un poste je ne rencontre aucun soucis, le plugin se charge bien, mais pour la création d'un poste le plugin me renvois des erreurs, car il prend un ID en second parametre, ID qui est définit lors de l'édition mais qui n'éxiste pas pour la création.

Cordialement.

7 réponses


Maenhyr
Réponse acceptée

Il faut créer un draft lors de la création d'un post. Ceci va ainsi donner un id et le plugin pourra donc se lancer. C'est expliqué dans le tuto sur le plugin ou dans la série Développez avec CakePHP.

Voici mon code PostsController :

/**
    *   Permet d'editer un article de la BDD
    */
    function admin_edit($id = null) {
        $this->helpers] = 'Media.Uploader';
        if($this->request->is('post') || $this->request->is('put')) {
            /*
                on teste les regles de validation du Model
                Si les regles sont correctes : save() renvoie true
            */
            if($this->Post->save($this->request->data)) {
                $this->Session->setFlash('Le contenu a bien été modifié', 'notif');
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash("Le contenu n'a pas pu être modifié", 'notif', array('type' => 'error'));
            }
        } elseif($id) { 
            $this->Post->id = $id;
            $this->request->data = $this->Post->read();
        } else {
            $this->request->data = $this->Post->getDraft('post');
        }

        $d'categories'] = $this->Post->Category->find('list');
        $this->set($d);
    }

et voici la méthode getDraft() à ajouter dans Post.php

/**
     *  Permet de generer / recuperer un brouillon
     */
    public function getDraft() {
        $elem = $this->find('first', array(
            'conditions' => array('online' => -1)
        ));
        if(empty($elem)) {
            $this->save(array('online' => -1), false);
            $elem = $this->read();
        }
        $elem$this->alias]'created'] = date('Y')."-".date('m')."-".date('d')." ".date('H').":".date('i').":".date('s');
        $elem$this->alias]'online'] = 0;
        return $elem;
    }

Exactement le même problème ! Quelqu'un pour nous aider ? :'(

en tentant de mettre le id a null par défaut ca peut resoudre le soucis ?
(Mais je penses que tu as du essayer ... )
ex:

function name($param1, $id = null) {
    ...
}
truc
Auteur

Salut Mikachu, j'avais eu la même idée, mais malheureusement cela ne résout pas le soucis.

Merci mikachu , mais déjà essayé de mon coté aussi et ça n'a pas marché.

PS: désolé d'utiliser ton post ,"Truc", mais je ne voulais pas faire de doublon dans le forum :)

truc
Auteur

ca fonction impec ! merci l'ami.

Merci
prbaron :DD