2013-07-12 48 views

回答

1

$validation->fails()返回是否布爾或者沒有通過驗證的輸入。您可以從$validation->messages()訪問驗證消息,或將它們傳遞到將被綁定到$errors變量的視圖。

查看validator docs

+0

你能告訴我這是怎麼回事?我不想將它們傳遞到視圖中 –

+0

在您的控制器中,您可以循環驗證消息,例如:foreach($ validation-> messages()as $ message){/ ** /}' – Dwight

4

我注意到這裏提供的例子都沒有實際工作!所以,你走了。這是我發現的解決方案,它意識到「validator-> messages()」返回一個不可檢索的受保護對象。

if ($validator->fails()) 
{ 
    foreach ($validator->messages()->getMessages() as $field_name => $messages) 
    { 
     var_dump($messages); // messages are retrieved (publicly) 
    } 

} 

我將引用: http://laravel.com/api/source-class-Illuminate.Support.MessageBag.html

MessageBag,這是什麼 「的消息()」 的回報。對於驗證器類的其他確認 - 參考: http://laravel.com/api/class-Illuminate.Validation.Validator.html

0

這是我剛纔在artisan 5.0 console命令中用來驗證參數的東西。這是fire()方法:

// Create the validator. 
    $validator = Validator::make(
     $this->argument(), 
     ['field1' => 'required|other|rules'] 
    ); 

    // Validate the arguments. 
    if ($validator->fails()) 
    { 
     // Failed validation. 

     // Each failed field will have one or more messages. 
     foreach($validator->messages()->getMessages() as $field_name => $messages) { 
      // Go through each message for this field. 
      foreach($messages AS $message) { 
       $this->error($field_name . ': ' . $message); 
      } 
     } 

     // Indicate the command has failed. 
     return 1; 
    } 

這是答案的延伸從@tfont

您可能需要更改其中發送消息($this->error())如果此命令沒有被運行作爲控制檯命令,即CLI,命令行。