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

时间:2017-02-19 11:03:49

标签: php laravel redirect laravel-5.4

现在redirectTo设置为/ home。

我想知道如何重定向到上一页。

我尝试使用

protected $redirectTo = URL::previous(); 

但我得到解析错误,期待','' or';''

解决此问题的最佳解决方案是什么?我假设我需要使用URL :: previous()以某种方式覆盖$ redirectTo变量,这就足够了。

这是我的注册控制器:

namespace App\Http\Controllers\Auth;

use App\User;
use URL;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;

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 \Illuminate\Contracts\Validation\Validator
 */
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']),
    ]);
}
}

3 个答案:

答案 0 :(得分:4)

RegisterController使用RegistersUsers特征。提交表单时,将调用此特征的register()方法。它验证输入,创建和验证用户,然后重定向到redirectPath()方法指定的路径。此方法实际上是在RedirectsUsers特征中设置的RegistersUsers特征。

redirectPath()方法将在控制器上查找redirectTo()方法。如果找不到,if将重定向到redirectTo属性中指定的url。如果它没有找到这个方法,它将使用从它返回的任何内容。

因此,如果您需要动态设置重定向路径,请将其放在RegisterController中:

protected function redirectTo()
{
    return url()->previous();
}

了解更多here

答案 1 :(得分:1)

如果用户从登录页面进入注册页面,我们需要在注册后将他重定向到上一个链接:

将此添加到 RegisterController:

protected function registered(Request $request, $user)
{
    return redirect()->intended($this->redirectPath());
}

答案 2 :(得分:0)

将此添加到RegisterController

protected function redirectTo(){
    return url()->previous();
}

注意:如果出现字段$redirectTo,请将其删除