2015-12-04 14 views
3

我有一種形式,它在編輯頁面,它具有字段名稱電子郵件。現在我不想檢查電子郵件驗證,這是唯一的。我已經在像'email'=>'unique:users'這樣的規則中進行了驗證,這些規則完全適用於創建頁面。因此,我希望在編輯頁面上忽略該驗證。我必須在Update函數的參數中使用FormRequest類,如FormRequest $ request,它定義了表單字段驗證的規則數組。如何忽略更新函數上電子郵件地址的唯一驗證規則?

public function rules() 
    { 
     $business = BusinessModel::all(); 

     return[ 
       'companyName' =>'required', 
       'address1' =>'required', 
       'pinCode'  =>'required|numeric', 
       'city'  =>'required', 
       'email'  =>'required|email|unique:users'.$id, 
       'phoneNumber' =>'required|numeric|unique:business|size:10', 
       'website'  =>'required|url', 
       'contactname' =>'required', 
       'designation' =>'required', 
       'emailaddress'=>'required|email|unique:business', 
       'phno'  =>'required|numeric', 
       ]; 
     } 

我們如何能夠通過ID規則功能FormRequest class..because在這個case..It'll告訴我錯誤,如,$ ID是未定義
'email' =>'required|email|unique:users'.$id, [錯誤未定義的變量ID]

+0

這裏是請求類型POST =>創建或PATCH =>更新代碼 –

回答

2

只傳遞當前記錄的primary key,驗證器將跳過表中的那一行。

'email'=>'unique:users,email,'.$id,

其中

電子郵件是field name$id是存儲primary key的變量。

+0

首先檢查 –

0

因爲您正在使用FormRequest類,所以$ id變量不能直接提供給您。

但是,根據您的結構設置,通過表單輸入或路徑參數,相同的數據已經可用於此類。

public function rules() 
    { 
     $business = BusinessModel::all(); 

     return[ 
       'companyName' =>'required', 
       'address1' =>'required', 
       'pinCode'  =>'required|numeric', 
       'city'  =>'required', 
       'email'  =>'required|email|unique:users'.$this->route('user'), 
       'phoneNumber' =>'required|numeric|unique:business|size:10', 
       'website'  =>'required|url', 
       'contactname' =>'required', 
       'designation' =>'required', 
       'emailaddress'=>'required|email|unique:business', 
       'phno'  =>'required|numeric', 
       ]; 
     } 

或者如果id是表單域的一部分:

因此,如果路線是一樣的東西myapp/user/234那麼你可以使用$this->route('user')

這將使你的規則看起來像訪問用戶ID而不是在路線上,您可以使用請求輸入方法$this->input('id')訪問它。

在這個完整的文檔可以在這裏找到:https://laravel.com/docs/5.6/requests#retrieving-input