2013-04-17 1 views
0

Возможно ли в CakePHP v 2.x изменить макет по умолчанию (default.ctp) на основе условия - например, если пользователь вошел в систему. Let's предположим, у меня есть меню:CakePHP (2.x) изменить макет на основе условий

«Главная» «меню Элемент1» «Пункт меню 2»

, и я хотел бы изменить это, когда пользователь вошел в систему, чтобы:

«Дом» " Пункт меню 1 "" Пункт меню 2 "" Пункт меню 3 "" Пункт меню 4 "

Где/Как я могу это достичь? Я предполагаю, что мне придется называть «$ this-> layout (« new-layout »); где-то, но я точно не знаю, где именно.

Благодаря

ответ

2

Если есть слишком много разницы между как макет (до/после войти), чем сделать два макета & в вашем AppController (в beforeFilter функции) раскладке изменения, если пользователь вошел в систему.

if($this->Auth->user()){ 
    $this->layout = "new_layout"; 
} 

И если речь идет только о некоторых ссылках на меню. Вы можете напрямую установить условие в файл default.ctp.

if ($this->Session->read('Auth.User')){ 
//Add more menu for logged in users. 
} 
0

Если моя память мне правильно, вы должны быть в состоянии использовать тот же макет просто использовать:

-- Menu Item 1 
-- Menu Item 2 
if ($authUser) { 
    -- Menu Item 3 
    -- Menu Item 4 
} 

Вы должны установить следующие в контроллере:

$this->set('authUser', $this->Auth->user()); 

Прошло некоторое время с тех пор, как я использовал торт!

 Смежные вопросы

  • Нет связанных вопросов^_^