Bonjour,

Je viens de commencer les tutos sur CakePhp et je rencontre un problème lorsque que je souhaite utiliser des fonctions commes $this->MonModel dans mon controller

Le message d'erreur qui s'affiche est : Call to a member function findByName() on a non-object

J'ai réussi à resoudre ce problème en utilisant cette ligne de code dans mon controller
public $uses = array('MonModel');
Et grace à cette variable mon controller et enfin capable de detecter mon model.
Cependant j'aimerais ne pas a avoir à utiliser ce bout de code car je ne vois pas Grafikart l'utiliser, j'ai l'impression de faire une erreur au niveau des inflectors de cakePhp.

Controller : SeriesController
Model : SerieModel
View : Series
table dans la BDD : series

Ai-je fais une erreur quelque part qui empecherais CakePhp de detecter la table que j'utilise sans utiliser public $uses = array('MonModel');
?

Merci d'avance pour vos réponses, je met ci-dessous mon code qui pose problème si besoin

<?php 
class SeriesController extends AppController{
    public $uses = array('Serie');

    public function add(){

        if($this->request->is('post')){

            $serie = $this->Serie->findByName($this->request->data['Serie']['name']);
            if(empty($serie)){
                $this->Serie->create($this->request->data, true);
                $this->Serie->save(null, true, array('name'));
                die($this->Serie->id);
            }
            else{
                debug($serie);
                die("J'ai trouvé la série");
            }

        }

    }

}

5 réponses


Kévin J
Auteur
Réponse acceptée

J'ai trouvé mon problème !!

Il s'avère que le mot Serie n'a pas de singulier en anglais du coup mon application cherche un model series, je suis tombé sur une exception --

Je savais que l'anglais était important pour développer mais pas à ce point la ^^

En fait je pense qu'il galère au niveau du singulier car le singulier de ies => y du coup il cherche un model Sery (à mon avis hein)

Donc pour le coup tu ne va pas avoir le choix :(

Kévin J
Auteur

Merci pour ta réponse Grafikart, mais ça n'a pas marché malheuresement.

J'ai essayé de remplacer $this-> Serie par $this->Sery
pour savoir si le problème venait effectivement de là mais non je reçois la même erreur.

J'ai aussi essayé de trouvé les bons inflectors sur le site cakePhp à cette adresse -> http://inflector.cakephp.org/Serie
Mais ça m'aide pas tellement..

Je sais que mon problème n'est pas très important du fait que j'ai trouvé une solution mais je cherche tout de même à comprendre les causes, afin de ne pas galerer sur ce genre de chose dans le futur. Et ça m'aidera aussi à mieux comprendre le frameWork, si quelqu'un peut m'aider sur ce problème.

Juste une question bête mais lorsque tu marques :

Controller : SeriesController
Model : SerieModel
View : Series
table dans la BDD : series

Le nom de ton model est SerieModel ou tout simplement Serie ?
Car dans le premier cas, cela ne risque pas de fonctionner ;)

Kévin J
Auteur

Bien vu, j'avais effectivement une erreur sur le nom de mon Model mais de toute façon ça ne change rien puisque le Model n'intervient pas .