###前提・実現したいこと
◆前提
下記サイトをもとに、Laravel5.1の学習をしております。
初めてのLARAVEL 5.1 : (17) VALIDATION(入力チェック)
◆実現したいこと
VALIDATIONを実装したい。
###発生している問題・エラーメッセージ
サイト通りに実装。
「$errors」が記載されているviewを表示したら
「Undefined variable: errors」
が表示されました。
当然ですが、$errorsの箇所(@if~@endif)を外すと正常に表示されます。
いろいろなサイトを調べてみましたが、同じ症状な方は見当たらず・・・
ふらふらといろんなサイトをさまよって
バリデーションに関して下記サイトにたどり着きました。
Larabel5.1 バリデーション
"バリデーションエラー表示"の項目を見てみると「$errors」変数についての記述が。
「全リクエストの全ビューで、いつでも$errors変数は利用できるのが、重要なポイントです。」
とあります。
これは、無条件で$errors変数をview内で利用可能で、
バリデーションエラー時に$errors変数に自動的にメッセージが詰め込まれてviewまで渡ってくるという理解でいいのでしょうか?
どのサイトにも当たり前のように利用している記載があるので、
何か手順を間違っているのか、何をどうすればいいのかもわからない状態となっています。
どなたか、お力添え頂ければ幸いです。
###ソースコード
php
1// resources/views/articles/create.blade.php 2 3@extends('layout') 4 5@section('content') 6 <h1>Write a New Article</h1> 7 8 <hr/> 9 {{-- エラーの表示を追加 --}} 10 @if ($errors->any()) 11 <div class="alert alert-danger"> 12 <ul> 13 @foreach ($errors->all() as $error) 14 <li>{{ $error }}</li> 15 @endforeach 16 </ul> 17 </div> 18 @endif 19 {!! Form::open(['url' => 'articles']) !!} 20...省略 21 {!! Form::close() !!} 22@endsection
php
1// app/Http/routes.php 2 3<?php 4 5/* 6|-------------------------------------------------------------------------- 7| ルートファイル 8|-------------------------------------------------------------------------- 9| 10| ここでアプリケーションのルートを全て登録してください。 11| 簡単です。ただ、Laravelへ対応するURIと、そのURIがリクエスト 12| されたときに呼び出されるコントローラーを指定してください。 13| 14*/ 15 16//Route::get('/', function () { 17// return view('welcome'); 18//}); 19Route::get('/', 'WelcomeController@index'); 20 21Route::get('articles', 'ArticlesController@index'); 22Route::get('articles/create', 'ArticlesController@create'); 23Route::get('articles/{id}', 'ArticlesController@show'); 24Route::post('articles', 'ArticlesController@store'); 25 26// ホーム(ログインしていないと見れないよう auth middleware を適用) 27Route::group(['middleware' => 'auth'], function() { 28 Route::get('/home', function () { 29 return view('home'); 30 }); 31}); 32 33/* 34|-------------------------------------------------------------------------- 35| アプリケーションのルート 36|-------------------------------------------------------------------------- 37| 38| このルートグループは、"web"ミドルウェアグループが指定された 39| 全ルートに対し適用されます。"web"ミドルウェアグループは 40| HTTPカーネルで定義されており、セッションの開始やCSRF保護などを含んでいます。 41| 42*/ 43 44Route::group(['middleware' => ['web']], function () { 45 // 46}); 47 48
php
1// app/Http/Kernel.php 2 3<?php 4 5namespace App\Http; 6 7use Illuminate\Foundation\Http\Kernel as HttpKernel; 8 9class Kernel extends HttpKernel 10{ 11 /** 12 * アプリケーションのグローバルHTTPミドルウェアスタック 13 * 14 * These middleware are run during every request to your application. 15 * 16 * @var array 17 */ 18 protected $middleware = [ 19 \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 20 ]; 21 22 /** 23 * アプリケーションのルートミドルウェアグループ 24 * 25 * @var array 26 */ 27 protected $middlewareGroups = [ 28 'web' => [ 29 \App\Http\Middleware\EncryptCookies::class, 30 \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 31 \Illuminate\Session\Middleware\StartSession::class, 32 \Illuminate\View\Middleware\ShareErrorsFromSession::class, 33 \App\Http\Middleware\VerifyCsrfToken::class, 34 ], 35 36 'api' => [ 37 'throttle:60,1', 38 ], 39 ]; 40 41 /** 42 * アプリケーションのルートミドルウェアスタック 43 * 44 * These middleware may be assigned to groups or used individually. 45 * 46 * @var array 47 */ 48 protected $routeMiddleware = [ 49 'auth' => \App\Http\Middleware\Authenticate::class, 50 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 51 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 52 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 53 ]; 54} 55 56
###補足情報(言語/FW/ツール等のバージョンなど)
OS:Windows10 Pro
◆Laravelの実行環境
・virtualBox
・vagrant
・Laravel Framework version 5.2.7 (Homestead)
・PHP 5.6.15
回答2件
あなたの回答
tips
プレビュー