用户登录后,我希望他们被重定向到包含与他们相关的模型之一的子域的路由。我已经像这样编辑了身份验证控制器中的$redirectTo变量:
protected $redirectTo = '/auth()->user()->country->slug';
我也试过
protected $redirectTo = '/{{auth()->user()->country->slug}}';
我得到了两者的非对象错误属性。
对此有什么解决方案,所以我可以将我的用户重定向到包含其各自状态的 slug 的路由?
尝试在AuthController
中覆盖redirectPath
方法
public function redirectPath()
{
return auth()->user()->state->slug;
}
不能使用函数来声明类属性,请参阅 http://php.net/language.oop5.properties
此声明可能包含初始化,但此初始化必须是常量值,也就是说,它必须能够在编译时进行评估,并且不得依赖于运行时信息才能进行评估。
如果你有属性必须使用函数来定义它,请使用__construct()
方法如下:
class MyClass
{
protected $myproperty;
public function __construct()
{
$this->myproperty = somefunction();
}
}
但是对于这种情况,您不能使用这种方式,因为当类启动时,还没有用户进行身份验证。相反,您可以在控制器上使用authenticated()
方法。
class AuthController extends Controller
{
...
public function authenticated()
{
if($path = Auth::guard($this->getGuard())->user()->state->slug){
return redirect($path);
}
return redirect()->intended($this->redirectPath());
}
}