Peux tu nous montrer le controlleur associé à ta vue stp.
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
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