簡體   English   中英

laravel 5.8 Auth / RegisterController自定義重定向驗證失敗

[英]laravel 5.8 Auth/RegisterController custom redirect on validation failure

我正在使用Laravel 5.8,我有一個頁面,其中包含注冊和登錄表單(2個單獨的表單發布到相應的端點/控制器)

我的注冊表格由Lavarel Auth提供給Auth / RegistrationController。

我想改變行為,以便在不成功的注冊嘗試時,它將添加一個額外的參數來重定向url,所以我知道哪個表單也適用於驗證反饋。

我已經知道redirectTo變量,這似乎是成功的請求

您只需覆蓋父函數即可創建新用戶

Auth / RegistrationController創建新方法

  /**
 * Create a new user instance after a valid registration.
 *
 * @param  array  $data
 * @return \App\User
 */
protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
    ]);
}

在這里,在'$ data'變量中,您將獲得通過表單傳遞的所有參數。

對於錯誤檢查,您可以檢查,

Laravel全局錯誤變量$ errors為null或不為null

  /**
 * Create a new user instance after a valid registration.
 *
 * @param  array  $data
 * @return \App\User
 */
protected function create(array $data)
{
    if(!empty($errors)){
        if($data['form'] == 'form_1'){
            $redirectTo = 'fitst_form' 
        }
        else if($data['form'] == 'form_2'){
            $redirectTo = 'second_form' 
        }
    }
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
    ]);
}

我希望這能解決你的問題

您需要覆蓋Auth/RegistrationController::register方法,查看框架提供的默認代碼並根據您的需要進行調整,如下所示:

public function register(Request $request) {

    if ($this->validator($request->all())->fails()) {
        return redirect('/foo?bar=1');
    }

    // Copy the default behaviour here
    ...
    // or you can just
    return parent::register($request);
}

您必須在app / Http / Controllers / Auth / RegisterController.php中設置register方法

受保護的函數寄存器(請求$ request){

$ errors = ['error'=>'你錯誤列表]; if(!empty($ errors)){return redirect() - > route('/ register-errorpage') - > withInput() - > withErrors($ errors); }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM