bonsoir tout le monde,

voila je suis débutant dans le framework cakephp et j'ai un message d'erreur qui s'affiche

Fatal error: Call to a member function numbers() on a non-object in C:\Program Files\EasyPHP-12.1\www\CakePHP\app\View\Posts\index.ctp on line 3

le code de mon fichier index.ctp est

<?php
echo $this->Paginator->numbers();
foreach ($articles as $a):
   echo '<div>'.$this->Html->image('/mCube/images/icon3.png').'<p>'.$this->Html->link($a"Post"]"titre"],array('action'=>'voir',$a'Post']'id'])).'</p>';
   echo '<br/><span>Le '.$this->Date->show($a"Post"]"date"]).' :: '.$a"Categorie"]"titre"].'</span></div>';
   echo '<p>'.$a"Post"]"contenu"].'</p>';

endforeach;
?>

j'ai pourtant été dans la doc sur le site de cakephp et suivi les instructions de paginator !!!

7 réponses


Peux tu nous montrer le controlleur associé à ta vue stp.

oui le voici :

<?php
class PostsController extends AppController{

    var $name = 'Posts';
        var $paginate = array(
            'Post' => array(
                    'limit' => 3,
                    'order' => array(
                            'Post.date' => 'Desc'
                            )
                    ));
        var $helpers = array('Html','Date');
        var $uses = array('Post','Comment');
        function beforeFilter(){
            parent::beforeFilter(); //réinitialise le beforeFilter de appControler
            $this->Auth->allow(array('index','categories')); //permet les 2 actions suivantes index et categories
        }
    function index(){
            $q = $this->paginate('Post');
            $this->set('articles', $q);
    }
        function categories($id){
            $q = $this->Post->find('first',array(
                "condition" => array('Post.id' => $id)
                ));
            $this->set('a', $q);
            $this->render("index");
    }
         function voir($id){
             if(!empty ($this->data)){
                 if($this->Comment->validates($this->data)){
                     $this->Session->setFlash('Votre commentaire a bien été posté');
                     $this->Comment->save($this->data);
                 }
                 else{
                     $this->Session->setFlash('Merci de valider vos champs');
                     $this->validateErrors($this->Comment);
                 }
             }
            $q = $this->Post->find('first',array(
                "condition" => array('Post.id' => $id)
                ));
            $this->set('a', $q);
    }
        function edit($id=null){
            $c = $this->Post->Categorie->find('list',array(
                'recursive' => -1, //pour n'avoir que les categories
                'fields' => array('id','titre')
            ));
            $this->set('cats',$c);
            $this->layout = 'admin';
            if(isset($this->data)){
                $this->Post->save($this->data);
                $this->Session->setFlash('Article bien édité');
                //$this->redirect('alist');
            }
            if($id!=null){
                $this->Post->id = $id;
                $this->data = $this->Post->read();
            }
    }
        function del($id){
            $this->Post->delete($id);
            $this->Session->setFlash('Article bien supprimé');
            $this->redirect('alist');
    }
        function alist(){
            $this->layout = 'admin';
            $q = $this->paginate('Post');
            $this->set('articles', $q);
    }
}
?>

Dans ton controller la function index essaie plutot :

$q = $this->paginate();

j'ai essayé en enlevant le 'Post' mais mtn j'ai un autre message d'erreur qui est

Fatal error: Class 'String' not found in C:\Program Files\EasyPHP-12.1\www\CakePHP\app\Model\comment.php on line 25

C'est ma faute au lieu de regler le probleme de pagination, j'ai continué le tuto ajouter des commentaires à votre blog :s

j'ai reglé le probleme de la class String mais toujours le meme message d'erreur pour la pagination

On parle toujours de la vue index avec le $this-> paginate() dans le controller ?

oui oui c'est bien ca toujours le meme message et il apparait quand je veux acceder à une categorie de mon blog

Fatal error: Call to a member function numbers() on a non-object in C:\Program Files\EasyPHP-12.1\www\CakePHP\blog\app\View\Posts\index.ctp on line 3