我需要你的帮助。
当用户登录时,我需要指导他们一个多语言路由器,根据我的阅读,我只需在我的LoginController中添加RedirectTo,但这样做没有效果:
class LoginController extends Controller
{
.
.
//protected $redirectTo ='/Utilisateur';(it's working)
protected $redirectTo = route('displayNew');(it isn't working)
.
.
}
信息:事实上,在登录后的Laravel上,用户被重定向到home(默认重定向),要改变这种行为,我们必须给redirectTo
变量赋值。处理此变量的函数是:
trait RedirectsUsers{
public function redirectPath(){
if (method_exists($this, 'redirectTo')) {
return $this->redirectTo();
}
return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home';
}
}
答案 0 :(得分:1)
Class properties必须是"静态"创造价值,即设定值。您不能使用另一个PHP函数在声明中分配值。您可以通过在构造函数中设置值来解决它:
class LoginController extends Controller
{
protected $redirectTo = '';
public function __construct() {
$this->redirectTo = route('displayNew');
}
}
答案 1 :(得分:0)
如果您已运行php artisan auth
像这样更改RedirectIfAuthenticated中间件
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return route('displayNew');//change the redirect here
}
return $next($request);
}
}
在路由文件中,您可以这样做
Route::get('displayNew', 'MultiLanguageController@index')->name('displayNew');
答案 2 :(得分:0)
如果您需要对用户身份验证后返回的响应进行更强大的自定义,Laravel提供了一个空的authenticated(Request $request, $user)
方法,如果需要,可以将其覆盖:
将此方法放入LoginController.php
protected function authenticated(Request $request, $user)
{
return redirect()->route('displayNew');
}