2013-05-02 30 views
1

我剛開始測試Laravel。我正在使用帶有一些字段的表單,並嘗試使用Laravel的內置驗證器類驗證輸入。Laravel會話數組值

$input = Input::all(); 
$rules = array(
     'fname' => 'required|max:100', 
     'lname' => 'required|max:100', 
     'email' => 'required|email', 
      ); 
$validation = Validator::make($input, $rules); 
if ($validation->fails()){ 
      return Redirect::to('inputform') 
          ->with('input_errors', $validation->errors); 
      } 

一切都很順利,驗證檢查工作。當驗證失敗時,我將錯誤放入一個名爲input_errors的會話變量中,並將其傳遞給視圖。我的問題是,我似乎無法顯示錯誤。我嘗試使用下面給出的blade templating engine作爲foreach循環:

@foreach (Session::get('input_errors') as $message) 
    {{ What Should I put here? }} 
@endforeach 

如何顯示正在返回的數組中的錯誤。我試着將它引用爲$message[0][0],但它沒有奏效。

謝謝。

編輯:對不起,忘了提,我使用Laravel 3

回答

4

用於獲取錯誤的正確語法是...

$messages= $validation->messages(); 

這本身,遺憾的是沒有要回你的消息。它將返回一個MessageBag實例。這使您可以提取任何您想要的或全部的特定消息。

如果你想獲得的所有郵件,現在你可以做的做...

$errors = $messages->all(); 

這將在視圖中顯示錯誤返回一個數組,你可以遍歷。也有用於獲取關於一個特定的領域,如錯誤的方法......

$firstNameError = $messages->first('fname'); 

$firstNameErrors = $messages->get('fname'); 

發送錯誤信息到視圖時,要使用我也建議...

->with_errors($validation); 

這會將錯誤刷新到會話並自動假定您將它們作爲$errors變量發送。然後你可以用你的視圖顯示錯誤。

{{ $errors->first('fname') }} // Blade approach 
<?php echo $errors->first('email'); ?> // Non-blade approach 

這樣,您不必爲視圖添加邏輯,試圖在嘗試回顯之前確定變量是否存在。

http://four.laravel.com/docs/validation

+0

我使用withErrors時得到一個錯誤信息,稱這是未定義功能 – rahules 2013-05-02 18:01:02

+0

@rahules應該工作。你現在使用的是什麼實際的代碼?你的Laravel是最新的嗎? – 2013-05-02 18:10:18

+0

它的工作。我不得不使用with_errors而不是withErrors。實際上,我使用的是laravel 3.2.14。意外的是laravel-4作爲標籤。更改並更新了帖子。 – rahules 2013-05-02 18:33:53