第1回~第5回までが完了しているものとして以下説明してまいります。
今回はhtmlのinputタグに相当するタグをLaravelCollectiveを利用して、出力してみましょう。タグにはざっと以下のものがあります。
これらをLaravelのForm関数を利用して出力してみましょう
まずURL一式を新規で作成しましょう。
下記を追加
route/web.php
Route::get('/input',['as'=>'input','uses'=>'IndexController@input']);
app/Http/Controller/IndexController.php
public function input(){
return view('input');
}
resource/views/input.blade.php←新規作成
@extends('template')
@section('title','入力ページ')
@section('content')
テスト
@endsection
一旦これで表示されるか見てみましょう。
https://localhost:8004/input
こんなページが表示されたかと思います。
ではさっそくこのページに色々な種類のフォームを入れていきましょう。
一般的に一番利用されているタイプではないでしょうか。こちらは1行表示の自由入力ベースのフォームになります。お問い合わせフォームでいうと「名前」とか入力する欄に該当するかと思います。
{{ Form::text($name, $value, [$options]) }}
{{Form::label('name','テキストフィールド',['class' => 'col-md-2 col-form-label text-left'])}}
{{Form::text('name',old('name'),['class'=>'col-md-5 form-control text-left','id'=>'name'])}}
{{ Form::email($name, $value, [$options]) }}
{{Form::label('email','メール',['class' => 'col-md-2 col-form-label text-left'])}}
{{Form::email('email',old('email'),['class'=>'col-md-5 form-control text-left','id'=>'email'])}}
{{ Form::password($name, [$options]) }}
{{Form::label('password','パスワード',['class' => 'col-md-2 col-form-label text-left'])}}
{{Form::password('password',['class'=>'col-md-5 form-control text-left','id'=>'password'])}}
{!! Form::radio($name, $value, $checked, [$options]) !!}
{{Form::radio('radio','ra',false,['class'=>'col-md-0 form-check-input','id'=>'ra'])}}
{{Form::label('ra','ラ',['class' => 'col-md-0 form-check-label text-left'])}}
{{ Form::checkbox($name, $value, $checked, [$options]) }}
{{Form::label('radio','チェックボックス',['class' => 'col-md-2 col-form-label text-left'])}}
<div class="form-check col-md-0 d-flex align-items-center pr-2">
{{Form::checkbox('check','ch',false,['class'=>'col-md-0 form-check-input','id'=>'ch'])}}
{{Form::label('ch','チェ',['class' => 'col-md-0 form-check-label text-left'])}}
</div>
<div class="form-check col-md-0 d-flex align-items-center pr-2">
{{Form::checkbox('check','ch',false,['class'=>'col-md-0 form-check-input','id'=>'eck'])}}
{{Form::label('eck','ック',['class' => 'col-md-0 form-check-label text-left'])}}
</div>
<div class="form-check col-md-0 d-flex align-items-center pr-2">
{{Form::checkbox('check','ch',false,['class'=>'col-md-0 form-check-input','id'=>'bo'])}}
{{Form::label('bo','ボッ',['class' => 'col-md-0 form-check-label text-left'])}}
</div>
<div class="form-check col-md-0 d-flex align-items-center pr-2">
{{Form::checkbox('check','ch',false,['class'=>'col-md-0 form-check-input','id'=>'x'])}}
{{Form::label('x','クス',['class' => 'col-md-0 form-check-label text-left'])}}
</div>
{{ Form::select($name, $list, $selected, [$options]) }}
{{Form::label('select','セレクトボックス',['class' => 'col-md-2 col-form-label text-left','id'=>'select'])}}
{{Form::select('select',[
'セ'=>['se'=>'セ'],
'レ'=>['le'=>'レ'],
'ク'=>['c'=>'ク'],
'ト'=>['t'=>'レ'],
],null,['class' => 'col-md-5 form-control text-left'])}}
{{ Form::file($name, [$options]) }}
{{Form::file('file',['class' => 'custom-file-input pr-0 pl-0'])}}
{{Form::label('file','ファイル',['class' => 'custom-file-label text-left','id'=>'file'])}}
{{ Form::textarea($name, $value, [$options]) }}
{{Form::label('textarea',"テキストエリア",['class' => 'col-md-2 col-form-label text-left'])}}
{{Form::textarea('textarea',null,['class' => 'col-md-5 form-control'])}}
{{ Form::date($name, $value, [$options]) }}
{{Form::label('date',"カレンダー(日)",['class' => 'col-md-2 col-form-label text-left'])}}
{!! Form::date('date', null, ['class' => 'col-md-5 form-control']) !!}
{{ Form::datetimeLocal($name, $value, [$options]) }}
{{Form::label('date',"カレンダー(日時)",['class' => 'col-md-2 col-form-label text-left'])}}
{!! Form::datetimeLocal('date', null, ['class' => 'col-md-5 form-control']) !!}
{{ Form::number($name, $value, [$options]) }}
{{Form::label('number','数値',['class' => 'col-md-2 col-form-label text-left'])}}
{!! Form::number('number', null, ['class' => 'col-md-5 col-form-label text-left']) !!}
{{ Form::submit($text, [$options]) }}
{!! Form::submit('サブミット',['class' => 'btn btn-primary mr-1']) !!}
{{ Form::button($text, [$options]) }}
{!! Form::button('ボタン',['class' => 'btn btn-primary mr-1']) !!}
{{ Form::reset($text, [$options]) }}
{!! Form::reset('リセット',['class' => 'btn btn-primary mr-1']) !!}
上記で紹介した各フォームをbootstrap4をベースに作成してみます。これをマスターすると各フォームのviewを表示させる部分をほぼマスターすることになります。
resource/views/input.blade.php
@extends('template')
@section('title','入力ページ')
@section('content')
<!-- コンテンツSTART -->
<div class="container-fluid mt-2 mx-auto">
<form>
<div class="form-group row">
{{Form::label('name','テキストフィールド',['class' => 'col-md-2 col-form-label text-left'])}}
{{Form::text('name',old('name'),['class'=>'col-md-5 form-control text-left','id'=>'name'])}}
</div>
<div class="form-group row">
{{Form::label('email','メール',['class' => 'col-md-2 col-form-label text-left'])}}
{{Form::email('email',old('email'),['class'=>'col-md-5 form-control text-left','id'=>'email'])}}
</div>
<div class="form-group row">
{{Form::label('password','パスワード',['class' => 'col-md-2 col-form-label text-left'])}}
{{Form::password('password',['class'=>'col-md-5 form-control text-left','id'=>'password'])}}
</div>
<div class="form-group row ">
{{Form::label('radio','ラジオボタン',['class' => 'col-md-2 col-form-label text-left'])}}
<div class="form-check col-md-0 d-flex align-self-center pr-2">
{{Form::radio('radio','ra',false,['class'=>'col-md-0 form-check-input','id'=>'ra'])}}
{{Form::label('ra','ラ',['class' => 'col-md-0 form-check-label text-left'])}}
</div>
<div class="form-check col-md-0 d-flex align-items-center pr-2">
{{Form::radio('radio','di',false,['class'=>'col-md-0 form-check-input','id'=>'di'])}}
{{Form::label('di','ジ',['class' => 'col-md-0 form-check-label text-left'])}}
</div>
<div class="form-check col-md-0 d-flex align-items-center pr-2">
{{Form::radio('radio','o',false,['class'=>'col-md-0 form-check-input','id'=>'o'])}}
{{Form::label('o','オ',['class' => 'col-md-0 form-check-label text-left'])}}
</div>
<div class="form-check col-md-0 d-flex align-items-center pr-2">
{{Form::radio('radio','bu',false,['class'=>'col-md-0 form-check-input','id'=>'bu'])}}
{{Form::label('bu','ボ',['class' => 'col-md-0 form-check-label text-left'])}}
</div>
<div class="form-check col-md-0 d-flex align-items-center pr-2">
{{Form::radio('radio','tt',false,['class'=>'col-md-0 form-check-input','id'=>'tt'])}}
{{Form::label('tt','タ',['class' => 'col-md-0 form-check-label text-left'])}}
</div>
<div class="form-check col-md-0 d-flex align-items-center pr-2">
{{Form::radio('radio','on',false,['class'=>'col-md-0 form-check-input','id'=>'on'])}}
{{Form::label('on','ン',['class' => 'col-md-0 form-check-label text-left'])}}
</div>
</div>
<div class="form-group row ">
{{Form::label('radio','チェックボックス',['class' => 'col-md-2 col-form-label text-left'])}}
<div class="form-check col-md-0 d-flex align-items-center pr-2">
{{Form::checkbox('check','ch',false,['class'=>'col-md-0 form-check-input','id'=>'ch'])}}
{{Form::label('ch','チェ',['class' => 'col-md-0 form-check-label text-left'])}}
</div>
<div class="form-check col-md-0 d-flex align-items-center pr-2">
{{Form::checkbox('check','ch',false,['class'=>'col-md-0 form-check-input','id'=>'eck'])}}
{{Form::label('eck','ック',['class' => 'col-md-0 form-check-label text-left'])}}
</div>
<div class="form-check col-md-0 d-flex align-items-center pr-2">
{{Form::checkbox('check','ch',false,['class'=>'col-md-0 form-check-input','id'=>'bo'])}}
{{Form::label('bo','ボッ',['class' => 'col-md-0 form-check-label text-left'])}}
</div>
<div class="form-check col-md-0 d-flex align-items-center pr-2">
{{Form::checkbox('check','ch',false,['class'=>'col-md-0 form-check-input','id'=>'x'])}}
{{Form::label('x','クス',['class' => 'col-md-0 form-check-label text-left'])}}
</div>
</div>
<div class="form-group row ">
{{Form::label('select','セレクトボックス',['class' => 'col-md-2 col-form-label text-left','id'=>'select'])}}
{{Form::select('select',[
'セ'=>['se'=>'セ'],
'レ'=>['le'=>'レ'],
'ク'=>['c'=>'ク'],
'ト'=>['t'=>'レ'],
],null,['class' => 'col-md-5 form-control text-left'])}}
</div>
<div class="form-group row ">
{{Form::label('file','ファイル',['class' => 'col-md-2 col-form-label text-left','id'=>'file'])}}
<div class="col-md-5 custom-file">
{{Form::file('file',['class' => 'custom-file-input pr-0 pl-0'])}}
{{Form::label('file','ファイル',['class' => 'custom-file-label text-left','id'=>'file'])}}
</div>
</div>
<div class="form-group row ">
{{Form::label('textarea',"テキストエリア",['class' => 'col-md-2 col-form-label text-left'])}}
{{Form::textarea('textarea',null,['class' => 'col-md-5 form-control'])}}
</div>
<div class="form-group row ">
{{Form::label('date',"カレンダー(日)",['class' => 'col-md-2 col-form-label text-left'])}}
{!! Form::date('date', null, ['class' => 'col-md-5 form-control']) !!}
</div>
<div class="form-group row ">
{{Form::label('date',"カレンダー(日時)",['class' => 'col-md-2 col-form-label text-left'])}}
{!! Form::datetimeLocal('date', null, ['class' => 'col-md-5 form-control']) !!}
</div>
<div class="form-group row ">
{{Form::label('number','数値',['class' => 'col-md-2 col-form-label text-left'])}}
{!! Form::number('number', null, ['class' => 'col-md-5 col-form-label text-left']) !!}
</div>
<div class="form-group row ">
{{Form::label('number',"ボタン各種",['class' => 'col-md-2 col-form-label text-left'])}}
{!! Form::submit('サブミット',['class' => 'btn btn-primary mr-1']) !!}
{!! Form::button('ボタン',['class' => 'btn btn-primary mr-1']) !!}
{!! Form::reset('リセット',['class' => 'btn btn-primary mr-1']) !!}
</div>
</form>
</div>
@endsection
https://localhost:8004/input
にアクセス。うまく表示されましたね。これでフォーム関係はだいたいマスターできたかと思います。
ただフォームによってはブラウザ依存があったりするので、実際に利用する前にブラウザで表示されるか、ググってもよいかもしれません。