Cela va faire des heures que je galère et surtout que je perd mon temp sur un problème de behavior qui je suis sûr est tout bête à résoudre.

Je suis en train de suivre le tuto "CakePHP Draft Plugin"
Mais je bloque dès le départ.
Il ne reconnait pas mon behavior.
Voici mon model :

<?php
class Actu extends AppModel{
    public $belongsTo = 'Organisation';
    public $actsAs = array('Media.Media','Draft.Draft'=> array(
    'conditions' => array('actus' => 1)
    ));
}

Mon controller :

<?php
class ActusController extends AppController{
    public function membre_add($id = null) {
        if(!empty($this->request->data)){
            $this->Actu->save($this->request->data);
            $id = $this->Actu->id;
        }
        if(!$id){
            $id = $this->Actu->getDraftId();
        }
        $this->request->data = $this->Actu->findById($id);
    }
}

le DraftBehavior.php est bien installé dans app/plugin/Draft/Model/Behavior
Je charge bien le plugin dans le bootstrap :

CakePlugin::load('Draft');

Mais j'ai systématiquement l'erreur :

Fatal Error
Error: Call to a member function getDraftId() on a non-object   
File: E:\RENAUD\LINNOVATEUR\www\app\Controller\ActusController.php  
Line: 15

Notice: If you want to customize this error message, create app\View\Errors\fatal_error.ctp

8 réponses


amethyste
Réponse acceptée

Problème de convention avec le nommage des tables. Un outil ici : http://inflector.cakephp.org/

amethyste
Réponse acceptée

http://inflector.cakephp.org/news
Là c'est un peu particluier news est invariable.

lupyo
Auteur

Je me demande si le problème ne vient pas du nom de ma table "Actus", pensez que le problème peut venir de la ?

lupyo
Auteur

Apparemment cela vient de la.
J'ai essayé avec :
Table : Actus
Controller : Actus
Modele : Actu

Cela ne marche pas
Avec
Table : News
Controller : News
Modele : New
Cela ne marche pas.

En revanche cela fonctionne avec :
Table : Actualities
Controller : Actualities
Modele : Actuality

Mais pourquoi cela me marche pas avec les 2 premiers nommages ?

lupyo
Auteur

Merci, je vais me pencher sur cet outil.

un petit conseil pour ne pas trop s'emmeler les pinceaux avec les conventions : prends l'habitude de nommer tes tables et models en anglais. Ca évitera toutes les petites subtilités de notre langue.

lupyo
Auteur

Yes,
tu as tout à fait raison. Cependant je ne comprend toujours pas pourquoi j'ai toujours le problème avec le schéma suivant :
Avec
Table : News
Controller : News
Modele : New

lupyo
Auteur

Ah oki, je l'avais saisie dans l'outils mais je n'avais essayé que "new", et je viens de comprendre que l'on peut aussi saisir directement les pluriels également.
Merci beaucoup pour ta réponse, cela va beaucoup m'aider.