Bonjour,
Pour avoir mon menu A-Z ( quand je clique sur une lettre, ça me renvoie à une liste des acteurs dont le nom commence par cette lettre) j'ai créé une méthode display(),celle si récupère une méthode de mon modèle qui compare la première lettre du nom de l'acteur avec la lettre de mon menu
Décrivez ici votre code ou ce que vous cherchez à faire
dans mon controller
public function display($lettre){
$res_lettres = $this->Personne->trieParLettre($lettre);
$this->set('p',$res_lettres);
}
dans mon model
public function trieParLettre($lettre){
return $this->find('all', array(
'conditions' => array('Personne.nom LIKE' => "$lettre%"),
'order' => array('Personne.nom ASC')
));
mettre dans display($lettre) , le paginate avec dans le paramètre $res_lettres (qui retourne un tableau)
Bonjour.
Je n'ai pas l'impression que tu aies bien consulté la documentation concernant le composant Paginator.
je sais qu'il faut mettre forcément un model mais on m'a dit que l'on pouvait mettre en parametrage un array dans le paginate =)
Ce que je veux dire, c'est qu'il te faut changer ton système, tu crées un finder personnalisé et non une fonction comme tu l'as fait et tu pourras définir au composant Paginator que tu veux utiliser ce finder.
Par exemple :
/* Dans ton modèle */
protected function _findParLettre($query)
{
$query['order']['Personne.nom'] = 'ASC';
return $query;
}
/* Dans la fonction de ton controller */
$this->Paginator->settings = [
'findType' => 'par_lettre',
'conditions' => ['Personne.nom LIKE' => $lettre . '%']
];
$res_lettres = $this->Paginator->Paginate('Personne');
$this->set('p', $res_lettre);
D'accord et 'findType' => 'par_lettre' c'est l'appelle de la methode _findParLettre() ? =)
J'ai fait :
public function display($lettre){
//$res_lettres = $this->Personne->trieParLettre($lettre);
//$this->set('p',$res_lettres);
$paginate = array('findType' =>'parLettre','conditions' => ['Personne.nom LIKE' => '%'.$lettre . '%']);
$this->Paginator->paginate('Personne');
$this->set('p', $paginate);
debug($paginate);
}
ma vue
<div class="row">
<?php foreach($p as $pers): ?>
<div class="col-sm-6 col-md-3" >
<div class="thumbnail">
<center><?php echo $this->Html->image($pers['Personne']['photo'],array('class' => 'imageActeur'));?></center>
<div class="caption">
<h3>
<div class="nomActeurListe">
<?php echo ucfirst($pers['Personne']['prenom'])." ".ucfirst( $pers['Personne']['nom']); ?>
</div>
</h3>
<div class="boutonListe">
<button class="btn btn-primary" role="button">
<?php echo $this->Html->link('Visiter',array('controller' => 'personnes', 'action' => 'view', $pers['Personne']['id']),array('class'=>'bouton')); ?>
</button>
<button class="btn btn-primary" role="button">
<?php echo $this->Html->link('Modifier',array('action' => 'modif', $pers['Personne']['id'] ),array('class'=>'bouton')); ?>
</button>
</div>
</p>
</div>
</div>
</div>
<?php endforeach;?>
</div>
et je n'arrive plus à récupérer un tableau avec mes données de la personne =/
C'est normal, ton tableau de la variable $paginate
n'est pas passé dans les settings du composant Paginator, en plus de ça, il n'est pas utilisé dans ta vue.
Tout ce que vaut ta variable $p
qui est envoyé à la vue actuellement, c'est uniquement le contenu de ta variable $paginate
, soit le tableau : array('findType' =>'parLettre','conditions' => ['Personne.nom LIKE' => '%'.$lettre . '%'])
.
le probleme c'est que si je fait ça
$this->Paginator->settings = array('findType' =>'parLettre','conditions' => ['Personne.nom LIKE' => $lettre . '%']);
$paginate = $this->Paginator->paginate('Personne');
$this->set('p', $paginate);
ça me renvoie à null =/