Неопределенная переменная: ошибки – Laravel 5.2

Я новичок в Laravel и использую laravel версии 5.2.

Я создал контроллер и запрос с именем ArticlesController и CreateArticleRequest соответственно, и я определил некоторые правила проверки.

CreateArticleRequest

<?php namespace App\Http\Requests; use App\Http\Requests\Request; class CreateArticleRequest extends Request { public function authorize() { return true; } public function rules() { return [ 'title' => 'required|min:3', 'body' => 'required|max:400', 'published_at' => 'required|date', ]; } } 

ArticlesController

 <?php namespace App\Http\Controllers; use App\Article; //use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller; use Carbon\Carbon; use App\Http\Requests\CreateArticleRequest; class ArticlesController extends Controller { public function add(){ return view('articles.add'); } public function create_article_row(CreateArticleRequest $request){ Article::create($request->all()); return redirect('articles/'); } } 

Когда я использую переменную $ errors в моем шаблоне, названном как add.blade.php, она показывает ошибку неопределенной переменной: $ errors Я пытался решить проблему, но я did't. Пожалуйста, скажите мне, где я ошибаюсь. add.blad.php

 {{ var_dump($errors) }} 

Нажмите здесь, чтобы увидеть изображение ошибки

Это проблема с обновлением 5.2. То, что происходит, – это промежуточное программное обеспечение, которое отвечает за то, чтобы переменная errors доступная ко всем вашим представлениям, не использовалась, поскольку она была перенесена из глобального промежуточного программного обеспечения в группу промежуточного программного обеспечения.

Есть два способа исправить это:

  1. В вашем файле kernel.php (app / Http / Kernel.php) вы можете переместить middleware \Illuminate\View\Middleware\ShareErrorsFromSession::class обратно в свойство protected $middleware объекта protected $middleware .

  2. Оберните все свои web маршруты группой маршрутов и примените к ним веб-промежуточное программное обеспечение:

     Route::group(['middleware' => 'web'], function() { // Place all your web routes here...(Cut all `Route` which are define in `Route file`, paste here) }); 

Скопировано из этой записи Larvel 5.2 $ ошибки, не появляющиеся в Blade

Проводя это, поскольку это может быть полезно для других,

Как сказал Kernel.php в 1-м решении, в вашем файле Kernel.php ( app/Http/Kernel.php ) переместите \Illuminate\View\Middleware\ShareErrorsFromSession::class из $middlewareGroups в protected $middleware свойство protected $middleware , но оно начнет бросать ошибка «Хранилище сеансов не установлено по запросу»,

для разрешения этого перехода \Illuminate\Session\Middleware\StartSession::class, в $middleware property .

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

 app/Providers/RouteServiceProvider.php 

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

Просто вырежьте все ваши маршруты из файла route.php и вставьте его между промежуточной группой «web», как это:

Файл маршрутов

Для 5.2 просто переместите маршруты с переменной ошибок в группу промежуточного программного обеспечения

С помощью этого кода вы можете ловить ошибки и отображать их:

 @if ($errors->any()) <div class='alert alert-danger'> @foreach ( $errors->all() as $error ) <p>{{ $error }}</p> @endforeach </div> @endif