Как изменить функциональность навигационной панели после входа или выхода из CakePHP 3?

Я пытаюсь изменить функциональность navbar, чтобы после входа в систему, кнопки «регистрация» и «вход» заменялись одной кнопкой «выход» …
Я пытался таким образом, но безуспешно.

C: \ XAMPP \ HTDOCS \ jobfinds \ SRC \ Template \ Элемент \ menu.ctp

    <div class="col_12 column">
<ul class="menu">
<li> Home</li>
<?php if(isset($user['id'])): ?>
<li>Logout</li>
<?php else: ?>
<li>Login</li>
<li> Register</li>
<?php endif ; ?>
</ul>
</div>

Я попытался передать $ user для просмотра в методе входа в систему с помощью

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

но menu.ctp не распознал это …
так как я могу на самом деле заставить его работать?

0

Решение

Что вам нужно, это проверить в вашем контроллере, если $this->Auth->user() не возвращает ноль, а просто устанавливает любую переменную, которую вы хотите. Кроме того, если вы хотите использовать его в элементе, вы должны убедиться, что эта переменная установлена ​​правильно во всех действиях. Так что лучшее место будет beforeRender() действие в вашем AppController. Вот как это может выглядеть:

public function beforeRender(Event $event){

/* --- */

if (is_object($this->Auth)) {
if ($this->Auth->user() !== null) {
$this->set("userIsLoggedIn", true);
} else {
$this->set("userIsLoggedIn", false);
}
}

/* --- */

}

И в твоей стихии:

<?php if(isset($userIsLoggedIn) && $userIsLoggedIn): ?>
<span>User is logged in</span>
<?php else: ?>
<span>User is NOT logged in</span>
<?php endif; ?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector