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

6 réponses


amethyste
Réponse acceptée
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.

nittya
Auteur

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

nittya
Auteur

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;
    }
nittya
Auteur

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