Laravel 5.2 では新しいフォーム配列入力検証が追加されていますが、混乱していますか?以下では、この機能を説明するために特定の例を使用します。
まず、routes.php で対応するルートを定義します:
Route::get('form','TestController@form');Route::post('form/validate','TestController@validate');
次に、Artisan コマンドを使用して、対応するコントローラーを作成します:
php artisan make:controller TestController
生成された TestController.php ファイルを次のように編集します:
<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use App\Http\Requests;use App\Http\Controllers\Controller;class TestController extends Controller{ public function form() { return view('test.form'); } public function validate(Requests\FormRequest $request) { return 'success'; }}
次に、フォーム ビュー ファイル resource/を作成します。 views/test /form.blade.php、form.blade.php ファイルの内容を次のように編集します:
@extends('layouts.app')@section('content') <div class="container"> <div class="row"> @if (count($errors) > 0) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form action="{{url('form/validate')}}" method="POST"> {!! csrf_field() !!} <label>Company Name</label> <input type="text" name="name"> <h3>Employees</h3> <div class="add-employee"> <label>Employee Name</label> <input type="text" name="employee[1][name]"> <label>Employee Title</label> <input type="text" name="employee[1][title]"> </div> <div class="add-employee"> <label>Employee Name</label> <input type="text" name="employee[2][name]"> <label>Employee Title</label> <input type="text" name="employee[2][title]"> </div> <input type="submit"> </form> </div> </div>@endsection
入力するフォームに配列入力フィールドemployee[][name]とemployee[][title]を定義しました。複数の従業員名と役職を同時に入力します。
さらに、コントローラー TestController の validate メソッドに FormRequest リクエスト クラスを挿入していることに注意してください。以下では、Artisan コマンドを使用してこのリクエスト クラスを生成します。これはアプリ内で行われます。FormRequest.php は /Http/Requests ディレクトリに生成されます。ファイルの内容を次のように編集します。
php artisan make:request FormRequest
この時点で、コードの作成作業が完了したので、配列入力の検証をテストしてみましょう。ブラウザで http://laravel.app/ にアクセスすると、ページは次のように表示されます:
次にフォーム データを入力します:
最後に、[送信] ボタンをクリックして検証エラー メッセージを表示します。