我的用户登录后,我希望将它们重定向到一条路线,该路线包含与其相关的模型之一。我在auth控制器中编辑了$ redirectTo变量,如下所示:
protected $redirectTo = '/auth()->user()->country->slug';
我也试过
protected $redirectTo = '/{{auth()->user()->country->slug}}';
我得到两个非对象错误的属性。
对此有任何解决方案,所以我可以将用户重定向到包含各自状态的slug的路由?
答案 0 :(得分:0)
您无法使用函数声明您的类属性,请参阅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());
}
}
答案 1 :(得分:0)
尝试覆盖redirectPath
AuthController
方法
public function redirectPath()
{
return auth()->user()->state->slug;
}