现在redirectTo
设置为/home
。
我想知道如何重定向到上一页。
我尝试使用
protected $redirectTo = URL::previous();
但是我会得到解析错误,期待 ','' or
';''
解决此问题的最佳解决方案是什么?我假设我需要以URL::previous()
的方式过度乘坐$redirectTo
变量,这足够了。
这是我的寄存器控制器:
namespace AppHttpControllersAuth;
use AppUser;
use URL;
use AppHttpControllersController;
use IlluminateSupportFacadesValidator;
use IlluminateFoundationAuthRegistersUsers;
class RegisterController extends Controller
{
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return IlluminateContractsValidationValidator
*/
protected function validator(array $data)
{
return Validator::make($data, [
// 'name' => 'required|max:255',
'username' => 'required|max:255|unique:users',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data)
{
return User::create([
// 'name' => $data['name'],
'username' => $data['username'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
}
RegisterController
使用RegistersUsers
特征。提交表单时,调用此特征的register()
方法。它验证了输入,创建和身份验证用户,然后重定向到redirectPath()
方法指定的路径。该方法实际上是在RedirectsUsers
特征中设置的,该特征由RegistersUsers
特征使用。
redirectPath()
方法将在控制器上寻找redirectTo()
方法。如果确实找到了此方法,它将使用从中返回的任何内容。如果找不到此方法,它将重定向到redirectTo
属性中指定的URL。
因此,如果您需要动态设置重定向路径,请将其放在寄存器controller中:
protected function redirectTo()
{
return url()->previous();
}
在此处阅读更多。
将其添加到RegisterController
:
protected function redirectTo(){
return url()->previous();
}
注意:如果存在字段$redirectTo
,请删除
如果用户从登录页面到寄存器页面,这要好得多,我们需要在注册后将其重定向到上一个链接:
将其添加到registercontroller:
protected function registered(Request $request, $user)
{
return redirect()->intended($this->redirectPath());
}
如果您想在不需要身份验证的情况下留在同一页面上,并且还需要进行下一个需要的验证,则可以通过添加以下代码来覆盖代码到registercontroller。
第一部分在显示寄存器之前写下最后一页,第二部分在成功登记后的第二部分重定向到书面页面。
public function showRegistrationForm()
{
if(!session()->has('url.intended'))
{
session(['url.intended' => url()->previous()]);
}
return view('auth.register');
}
protected function registered(Request $request, $user)
{
return redirect()->intended($this->redirectPath());
}