2014-03-16 3 views
0

Позвольте мне рассказать вам о моей ситуации. Я создал простую библиотеку/модуль, который я могу заполнить в своем контроллере. Таким образом, я могу использовать один файл вида и иметь разные результаты, просто изменив некоторые поля $ form (например, текстовые входы, selects и т. Д.). Ниже приведен пример:laravel validation output in :: back controller

$form = new FormHelper('Webshop bewerken','shop/update',$errors); 
$form->addHiddenInput('id',$id); 
$form->addTextInput('name','Naam',$item->name); 
$form->addTextInput('export','Uitvoer',$item->output_location); 
$form->addTextInput('method','Methode',$item->method); 
$form->addSidebar(); 
$form->generateForm(); 
//show the page 
$this->layout->content = View::make('item')->with('form',$form); 

Проблема существует не в пределах формы. Это отлично работает, пока я не буду проверять. Однако ошибки $ undefined, поэтому я не могу отображать ошибки.

Я заметил, что эта переменная доступна только в представлении, а не в контроллере.

Это нормально, если у вас есть только несколько файлов blade.php, но не в моем случае (много экранов с общей информацией).

Как я могу получить доступ к переменной $ errors (выводимой из валидатора laravel) в контроллере и не просматривать?

Ниже приведен пример валидатор кода я использую:

//run the validator 
$validator = Validator::make(Input::all(), $rules); 

if ($validator->fails()) { 
return Redirect::back()->withInput()->withErrors($validator); 
} else { 
//do something else(not relevant) 
} 

ответ

0

В контроллере вы можете использовать:

$validator = Validator::make(Input::all(), $rules); 

$errors = $validator->errors(); 

Это даст вам те же самые ошибки, которые вы получаете в представлении. Чтобы получить доступ к конкретной ошибке, вы можете использовать:

$error = $validator->errors('someFormFieldName')->first();