Я новичок в 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
доступная ко всем вашим представлениям, не использовалась, поскольку она была перенесена из глобального промежуточного программного обеспечения в группу промежуточного программного обеспечения.
Есть два способа исправить это:
В вашем файле kernel.php
(app / Http / Kernel.php) вы можете переместить middleware \Illuminate\View\Middleware\ShareErrorsFromSession::class
обратно в свойство protected $middleware
объекта protected $middleware
.
Оберните все свои 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