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");
}
}
}
}
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 :(
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 ;)
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 .