首页 文章

Laravel自定义注册路由/逻辑

提问于
浏览
0

我想在我的Auth控制器中覆盖Laravel 5.2的 public function postRegister() .

我首先改变路线:

Route::post('/auth/register', 'Auth\AuthController@postRegisterI');

在我的Auth控制器中,我现在有了这个新的 postRegisterI() 方法,反对依赖于基础 postRegister() . 但我对这种新方法的改变似乎并不适用?

由于某种原因它仍然指向 postRegister() 吗?我的AuthController看起来像这样:

class AuthController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Registration & Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users, as well as the
    | authentication of existing users. By default, this controller uses
    | a simple trait to add these behaviors. Why don't you explore it?
    |
    */

    use AuthenticatesAndRegistersUsers, ThrottlesLogins;

    /**
     * Create a new authentication controller instance.
     *
     * @return void
     */

    public function __construct()
    {
        $this->middleware('guest', ['except' => 'getLogout']);
    }

    public function postRegisterI(Request $request)
    {
        return print_r($request);
        $validator = $this->validator($request->all());

        if ($validator->fails()) {
            $this->throwValidationException(
                $request, $validator
            );
        }

        //Auth::login($this->create($request->all()));
        $this->create($request->all());
        //return redirect($this->redirectPath());
        return;
    }

    /**
     * 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|unique:users',
            'email' => 'required|email|max:255|unique:users',
            'password' => 'required|confirmed|min:2',
        ]);
    }

    /**
     * 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'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }
}

例如,在我的ajax请求 /auth/register/ 中,它从不回应我指示的回报,它也一直试图将我重定向到 /home . 我这样做是因为我没有传递 /auth/register 表单,而是传递了一个带有数据的Javascript数组,不仅创建了用户(电子邮件,密码等),还提供了用户需要加入的应用程序 .

最后,我想在创建用户时创建具有该数据的Application模型,但是现在我不确定我的函数是否被正确调用!

EDIT: 所以,看起来 __construct() 函数导致问题......我应该摆脱它吗?我不明白为什么我需要发表评论才能从 postRegisterI() 获得我的回报?

2 回答

  • 0

    首先,确保在调用 Route::auth() 之前声明了新路由 . 否则,Laravel将忽略您的添加,并将始终调用Easy Auth附带的那个 . 第二 . 为什么要使用具有不同名称的其他方法覆盖方法?只需在AuthController中创建一个方法postRegister,您就会自动覆盖驻留在Trait中的方法 . 所以你不应该是正确的解决方案 .

    另一件事,对于ajax请求,请确保验证请求的类型为ajax:

    if ($request->ajax()){
    //Code here
    return response()->json([],200);
    }
    

    此控制器用于检查注册规则,创建用户以及重定向到重定向路径 . 它不是为ajax处理而设计的,因此,您需要为它添加代码

  • -1

    也许这个话题会对你有所帮助custom register

相关问题