Навигация в CakePHP
Я новичок в CakePHP. Это часть навигации, которую я использую на одном из моих сайтов CakePHP:
<?php
$list=array(
$this->Html->link('Home',array('controller'=>'pages','action'=>'index')),
$this->Html->link('About',array('controller'=>'pages','action'=>'about')),array(
$this->Html->tag('span',null,array('class'=>'top')),
$this->Html->tag('span',null,array('class'=>'bottom')),
$this->Html->link('Sub Menu 1',array('controller'=>'','action'=>'')),
$this->Html->link('Sub Menu 2',array('controller'=>'','action'=>'')),
$this->Html->link('Sub Menu 3',array('controller'=>'','action'=>'')),
),
$this->Html->link('Gallery',array('controller'=>'pages','action'=>'gallery')),array(
$this->Html->tag('span',null,array('class'=>'top')),
$this->Html->tag('span',null,array('class'=>'bottom')),
$this->Html->link('Sub Menu 1',array('controller'=>'','action'=>'')),
$this->Html->link('Sub Menu 2',array('controller'=>'','action'=>'')),
$this->Html->link('Sub Menu 3',array('controller'=>'','action'=>'')),
),
$this->Html->link('My Posts',array('controller'=>'pages','action'=>'myPosts/1')),
$this->Html->link('Blog',array('controller'=>'pages','action'=>'blog')),
$this->Html->link('Contact',array('controller'=>'pages','action'=>'contact')),
$this->Html->link('Logout',array('controller'=>'users','action'=>'logout'))
);
echo $this->Html->nestedList($list);
?>
Что я хочу, меню "Мои сообщения" и "Выход" будут отображаться, если и только пользователь вошел в систему, в противном случае нет. Как это сделать? И есть ли у вас идея лучше сделать панель навигации в CakePHP?
Вот span
теги используются только для оформления дизайна.
1 ответ
Решение
1-е решение
Вы должны создать отдельный массив для вошедшего в систему пользователя, и это можно сделать с помощью функций аутентификации, таких как
В контроллере
$this->set('authUser', $this->Auth->user());
ИЛИ ЖЕ
$this->set( 'authUser', $this->Auth->loggedIn());
Ввиду
If($authUser){
$list = array(/*without Post and Logout*/);
} else{
$list = array(/*same complete array*/);
}
2-е решение
if ($this->Session->read('Auth.User')){
$list = array(/*without Post and Logout*/);
} else{
$list = array(/*same complete array*/);
}