Bonjour !
Je passe surement à côté d'une erreur bête mais tant pis, je pose la question. J'ai suivit les 4 tutos pour développer un site avec CakePHP, puis celui sur le système de membre. Tout marche nickel, SAUF (parce qu'il y a forcément un sauf), lorsque je suis sur la page membre/users/index
les liens de mon menu sont préfixés membre. Voici mon menu.ctp :
<?php $pages = $this->requestAction(array('controller' => 'pages', 'action' => 'menu', 'admin' => false, 'membre' => false)); ?>
<nav>
<ul>
<?php foreach ($pages as $k => $v): $v = current($v); ?>
<li><?= $this->Html->link($v'name'], $v'link'], array('style' => "color: white;")); ?></li>
<?php endforeach ?>
<li><?= $this->Html->link('News', array('controller' => 'posts', 'action' => 'index', 'membre' => false), array('style' => "color: white;")); ?></li>
</ul>
</nav>
Ce que je ne comprends pas, c'est que j'ai mit membre à false dans le resquestAction.
Merci d'avance pour votre aide
function menu()
{
$pages = $this->Post->find('all', array(
'conditions' => array('type' => 'page', 'online' => 1),
'fields' => array('id', 'slug', 'name', 'type','link')
));
foreach($pages as $k=>$v){
$pages$k]'Post']'link']'membre'] = false;
}
return $pages;
}
Dans ton BeforFilter de ton AppController, tu as bien :
$this->Auth->loginAction = array('controller'=>'users','action'=>'login','membre'=>false,'admin'=>false);
Et tes vues ne sont pas préfixés, du style membre_index.ctp ?
Pour ma part, je ne précise pas
'membre' => false
dans mon menu.ctp ni dans le requestAction, ni dans mes <li> et cela
fonctionne très bien.
J'ai bien cette ligne dans mon AppController, et la page en question est bien préfixée.
Si je ne précise pas (Je prends l'exemple d'admin, parce que ça marche avec lui) 'admin => false, j'ai ce soucis, en revanche, ici, ça ne semble pas fonctionner
Tu pourrais nous mettre le contenu de ta fonction menu dans le PagesController stp, ou alors un debug de $pages stp
Voici un débug de $pages :
array(
(int) 0 => array(
'Post' => array(
'id' => '5',
'slug' => 'test',
'name' => 'Contenu',
'type' => 'page',
'link' => array(
'controller' => 'pages',
'action' => 'show',
'id' => '5',
'slug' => 'test'
)
)
),
(int) 1 => array(
'Post' => array(
'id' => '4',
'slug' => 'mon-troisieme-titre',
'name' => 'Mon troisième titre',
'type' => 'page',
'link' => array(
'controller' => 'pages',
'action' => 'show',
'id' => '4',
'slug' => 'mon-troisieme-titre'
)
)
),
(int) 2 => array(
'Post' => array(
'id' => '2',
'slug' => 'ma-premiere-page',
'name' => 'Ma première page',
'type' => 'page',
'link' => array(
'controller' => 'pages',
'action' => 'show',
'id' => '2',
'slug' => 'ma-premiere-page'
)
)
)
)
Et ma fonction menu() de PagesController :
function menu()
{
$pages = $this->Post->find('all', array(
'conditions' => array('type' => 'page', 'online' => 1),
'fields' => array('id', 'slug', 'name', 'type')
));
return $pages;
}
Super ça marche ! Merci ! Par contre, du coup, je me demande pourquoi ça n'a pas fonctionné dans la page menu.ctp.
Merci à tous :D