Как мне создать кнопку выхода из системы в моей строке меню, которая отображается помощником вида?

У меня есть subnav bar в моем модуле, созданный из частичного просмотра через помощник.

Вот конфиг в файле module.config.php:

'navigation' => array( 'default' => array( array( 'label' => 'Create', 'route' => 'mymodule\Create', ), array( 'label' => 'View', 'route' => 'mymodule\view', ), array( 'label' => 'Search', 'route' => 'mymodule\search', ), array( 'label' => 'Log Off', 'route' => 'mymodule\logoff', ), ), ), 

);

Итак, вот моя проблема, я не просто хочу перенаправить пользователя на страницу входа, я хочу очистить их сессию, а затем перенаправить их на страницу входа. Я также не хочу, чтобы страница входа в систему просто очищала сессию всякий раз, когда пользователь переходит к ней (если они вошли в систему и случайно нажали кнопку «Назад»).

Итак, каков наилучший способ справиться с этой текущей конфигурацией? Я думал, что у меня может быть помощник по представлению, который отображает частичный набор флагов в сеансе, который будет отображаться на странице входа в систему, и действовать соответственно – он будет проверять флажок «logoffButtonPress» в сеансе или что-то в этом роде. Но целесообразно ли делать что-то подобное в помощнике вида? Возможно ли это в представлении помощника?

Почему бы просто не нажимать кнопку logoutAction ?

Я использую BjyAuthorise и ZfcUser но процесс очистки сеанса и перенаправления одинаковый.

LoginController

 public function logoutAction() { $this->authService->logout(); $redirect = $this->params('redirect', false); if ($redirect) { return $this->redirect()->toUrl($redirect); } return $this->redirect()->toRoute( $this->config->getLogoutRedirectRoute() ); } из public function logoutAction() { $this->authService->logout(); $redirect = $this->params('redirect', false); if ($redirect) { return $this->redirect()->toUrl($redirect); } return $this->redirect()->toRoute( $this->config->getLogoutRedirectRoute() ); } 

AuthService

 public function logout() { $adapter = $this->authService->getAdapter(); $adapter->resetAdapters(); $adapter->logoutAdapters(); $this->authService->clearIdentity(); } 

Как говорит Алекс, это способ сделать это.

Этот код правильный

  array( 'label' => 'Log Off', 'route' => 'mymodule\logoff', ), 

Таким образом, вам нужно установить действие выхода на путь «mymodule \ logoff», очистить сеанс и перенаправить пользователя для входа в систему или дома или того, что вы хотите.

В действии входа вам не нужно очищать сеанс.