[cakephp2]Problème fonction find()

Par ccvf3s, il y a 13 ans


Call to a member function find() on a non-object in ...

Voilà en gros ce qui s'affiche quand j'essaye de lancer une page du controller
Le code de ma class NewsController

<?php
class NewsController extends AppController
{
    var $name = 'news';
    function index()
    {
        $allNews = $this->New;
        $all = $allNews->find('all');

        $this->set('articles', $all);
    }
}

enregistré dans NewsController.php

celle de ma class model New

<?php
class New extends AppModel
{
    var $name = 'New';
}

enregistré dans new.php

ma table s'appelle new.

Je tiens à préciser que je suis débutant avec cake,
je suis le tuto sur ce site et aimerait avancer merci .

6 réponses

karmalo, il y a 13 ans

Ca me parait bizarre ton code
Essaie ca

function index()
    {
        $this->set('news', $this->New->find('all'));
    }

Si tu es sur cakephp 2 et en php5, tu n'as pas besoin de

var $name = 'news';
ccvf3s, il y a 13 ans

Merci pour ta réponse, j'ai essayé le code toujours la même érreur, une autre idée merci.

karmalo, il y a 13 ans

tu as appelé ta table new dans ta base de données? il faut les nommer au pluriel, donc news

Flohw, il y a 13 ans

News est invariable… pluriel et singulier c'est news (quand on parle des nouvelles, sinon c'est variable)
il faut que ta table et ton modele s'appelle news/News
et effectivement, tu n'as pas besoinde la propriété $name avec cakephp 2

kal-el, il y a 13 ans

Pourquoi écrire ça :

<?php
    $allNews = $this->New;
    $all = $allNews->find('all');
?>

J'avoue que je comprends pas là :s

ccvf3s, il y a 13 ans

merci je revois ça, mais le problème je nomme le model et le controller pareil?

merci ça marche problème de noms merciii.