成功注册在Laravel之后,如何重定向到上一页



现在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());
}

最新更新