Soucis avec le plugin média

Par truc, il y a 13 ans


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

sufyan66, il y a 13 ans

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

Mikachu, il y a 13 ans

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, il y a 13 ans

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

sufyan66, il y a 13 ans

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 :)

Maenhyr, il y a 13 ans

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;
    }
truc, il y a 13 ans

ca fonction impec ! merci l'ami.

sufyan66, il y a 13 ans

Merci
prbaron :DD