Laravel показывает форму формы с именем элемента формы как ключ

Я пытаюсь изучить laravel . Я знаю Codeigniter . В codeigniter3 я получу форму error как массив с ключом в качестве имени формы, используя функцию

 $this -> form_validation -> error_array(); 

он будет отображаться как

 array( 'form_element1' => 'this field is required', 'form_element2' => 'this field is required' ) 

Есть ли способ в laravel 5 сделать то же самое?

Пожалуйста помоги. Любая помощь может быть оценена

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

 return redirect->back()->withErrors($request->all()); 

или

 return redirect->back()->withErrors(Input::all()); 

и вы можете печатать ошибки,

 @if (count($errors) > 0) <div class="alert alert-danger"> <strong>Whoops!</strong> There were some problems with your input.<br><br> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif 

Контроллер Laravel использует свойство ValidatesRequests которое предоставляет метод validate . Вот пример того, как проверить запрос:

 namespace App\Http\Controllers; class MyController extends Controller { public function store(Request $request) { $this->validate($request, [ 'subject' => 'required|max:255', 'message' => 'required', ]); // All input is valid, do your task. } } 

Если пользовательские входы не передают правила $this->validate() он автоматически перенаправляет пользователя обратно в вид формы со старым вводом и ошибками. Ошибки удерживаются переменной $errors которая является экземпляром Illuminate\Support\MessageBag , чтобы отобразить ее на вашем представлении:

 @if (count($errors) > 0) <div class="error"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif 

Или вы можете получить ошибку по ключу:

 @if($errors->has('subject')) {{ $errors->first('subject');}} // Printed: Subject field is required. @endif 

Чтобы ответить на вопрос о том, как отображать ошибки, как в CI, вы можете использовать метод toArray() Illuminate\Support\MessageBag :

 $errors->toArray() 

Ручная проверка

Вы также можете использовать экземпляр валидатора вручную, используя фасад Validator , например:

 namespace App\Http\Controllers; use Validator; class MyController extends Controller { public function store(Request $request) { $validator = Validator::make($request->all(), [ 'subject' => 'required|max:255', 'message' => 'required', ]); if ($validator->fails()) { return redirect('your-form-uri')->withErrors($validator)->withInput(); } // All input is valid, do your task. } } 

Снова вы можете получить ошибки от переменной $errors как указано выше.

Проверка формы запроса

Чтобы использовать этот метод, вы можете начать с создания запроса проверки формы с помощью artisan интерфейса Artisan:

  php artisan make:request ContactRequest 

Он создаст вам класс ContactRequest , вы можете найти его в папке app/Http/Request/ .

 namespace App\Http\Requests; use App\Http\Requests\Request; class ContactRequest extends Request { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'subject' => 'required|max:225', 'message' => 'required', ]; } } 

В переменной вашего контроллера вместо Request $request вы можете использовать ContactRequest $request :

 namespace App\Http\Controllers; use App\Http\Requests\ContactRequest; class MyController extends Controller { public function store(ContactRequest $request) { // All input is valid, do your task. } } 

Если пользовательский вход проходит, он будет продолжать выполнять свой код по этому методу, иначе пользователь будет перенаправлен обратно в режим просмотра формы, и, конечно, вы можете отображать ошибки так же, как два метода выше.