2015-06-12 62 views
0

我目前正在使用我的Laravel應用程序編輯窗體。如何驗證php Laravel 5中的某些字段?

我請求表單提交的所有輸入。我得到了:

array:6 [▼ 
    "_method" => "PUT" 
    "_token" => "iWyonRYFjF15wK8fVXJiTkX09YSPmXukyGbBcHRA" 
    "phone" => "9786770863" 
    "email" => "[email protected]" 
    "address" => "23 School St Lowell MA 01851" 
    "$id" => "1" 
] 

我的目標是隻驗證:電話,電子郵件和地址。

我已經試過

$validator = Validator::make(

      ['phone' => 'max:20'], 
      ['email' => 'required|email|unique:users,email,'. $id ], 
      ['address' => 'max:255'] 

     ); 

    // dd(Input::get('email')); // HERE <------ I got the email to display 

    if ($validator->fails()) { 

     return Redirect::to('user/profile/'. $id)->withErrors($validator)->withInput(); 

    } else { 



     $user   = User::findOrFail($id); 
     $user->phone = Input::get('phone'); 
     $user->email = Input::get('email'); 
     $user->address = Input::get('address'); 

     $user->save(); 

它持續失敗對我,說

The email field is required.

但是,如果我沒有記錯的電子郵件領域是存在的。

如何驗證php Laravel 5中的某些字段?

+0

讓我試試。 –

+0

我收到了電子郵件,顯示''[email protected]'' –

+0

好吧,我會試試。 –

回答

3

它應該是:

$validator = Validator::make($input, [ 
      'phone' => 'max:20', 
      'email' => 'required|email|unique:users,email,'. $id , 
      'address' => 'max:255'] 
     ); 

它認爲你是路過的檢查數據的第一線,第二線作爲您的驗證規則。它沒有找到一個電子郵件密鑰,所以它告訴你它是必需的。

+0

非常感謝。 @Jeremy –

3

您的Validator::make()方法調用是有點關閉。

使用此函數時,第一個參數是要驗證的數據數組(您的請求數據),第二個參數是您的規則數組。

您目前的代碼有三個參數傳入。它將['phone' => 'max:20']作爲您的數據進行驗證,['email' => 'required|email|unique:users,email,'. $id ],作爲您的規則,然後將['address' => 'max:255']作爲您的消息數組。

應該是這樣的:

$validator = Validator::make(
    Input::all(), 
    [ 
     'phone' => 'max:20', 
     'email' => 'required|email|unique:users,email,'. $id, 
     'address' => 'max:255' 
    ] 
); 
+0

非常感謝。 @patricus –