Я пытаюсь изменить функциональность 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 не распознал это …
так как я могу на самом деле заставить его работать?
Что вам нужно, это проверить в вашем контроллере, если $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; ?>
Других решений пока нет …