Вы можете использовать атрибут данных Ajax-ссылки Logout для перенаправления в любое место.проверьте ниже пример.[, чтобы это работало, вам нужно добавить сессионный компонент на свою страницу ]
проверить дополнительную информацию: https://octobercms.com/plugin/rainlab-user#documentation
<a data-request="onLogout"
data-request-data="redirect: 'https://www.google.com'"
>
Sign out
</a>
Тем не менее, если выХотите использовать событие для перенаправления пользователя, вы можете использовать ниже код.Примечание: это своего рода хакерский подход not recommended but yes it works
.
Event::listen('rainlab.user.logout', function ($controller) {
$_POST['redirect'] = 'https://www.google.com';
});
Почему ваш подход не работает [Дополнительно только для понимания]
Поскольку в обработчике событий они не перехватили никаких данных, которые вы возвращаете из события, вы returning Redirect
, но в обработчике они не перехватили и не получили его, это событие rainlab.user.logout
просто сработало и позволило вам получить доступ к $user
данным объектаничего более.так что ваше возвращаемое заявление не влияет на него.
content : плагины / rainlab / user / components / Session.php
public function onLogout()
{
$user = Auth::getUser();
Auth::logout();
if ($user) {
Event::fire('rainlab.user.logout', [$user]);
// ^ see, nothing is here which can accept your return redirect.
}
$url = post('redirect', Request::fullUrl());
Flash::success(Lang::get('rainlab.user::lang.session.logout'));
return Redirect::to($url);
}
если у вас естьлюбые сомнения, пожалуйста, прокомментируйте.