Laravel:{{Form::input()}} を使ってnumberの入力フィールドを作る
Laravel:{{Form::input()}} を使ってnumberの入力フィールドを作る
検索項目の作成などにすごく便利な{{Form::input()}}の記載方法。
ちゃんと知識を入れる前にお手本参照して作成していったため type=’number’ を指定できないという致命的状態に陥ってました。
「これは不味い」と判断し調べた事を備忘録として記します。
Viewに記載する{{Form::}}はFormファサードと呼ぶ
なんも考えずにコピー利用していた {{Form:: で始まる記載方法。
この名前は【Formファサード】と呼ぶそうです。
app/start/global.php に オリジナルなFormマクロを登録する事でViewからFoamファサードを介し呼び出せるという結構自由度の高い奴でした。
以下、参照例です。
■app/start/global.php
1 2 3 4 5 6 7 8 9 10 |
\Form::macro('sumthin', function($value, $count = 10, $start = 1) { $build = []; while ($count > 0) { $build[] = sprintf('<input type="sumthun" value="%s" index="%s">', $value, $start); $start += 1; $count -= 1; } return join("\n", $build); }); |
■View
1 |
{{Form::sumthin('test', 5)}} |
■結果
1 2 3 4 5 |
<input type="sumthin" value="test" index="1"> <input type="sumthin" value="test" index="2"> <input type="sumthin" value="test" index="3"> <input type="sumthin" value="test" index="4"> <input type="sumthin" value="test" index="5"> |
なるほど、知っていればかなり使い勝手のいい奴みたいです。
{{Form::input()}}のType記載は第一引数で
さて、やりたかったFormファサードを使ったType=’number’の指示方法です。
Form::input() の第一引数にtypeを指定する
なるほど、お手本にさせて頂いた記載方法では第一因数が【’検索する’】と文字が記載されていたので全く気にかけていませんでした。
1 |
{{Form::input('number','name名',フィールド初期値,['id' => 'hoge','class' => 'hogehoge'])}} |
お~簡単だ。
これが出来ると、Controllerから受けた検索フィールドの値をif文使ってある時無い時分けてなんてことしなくても大丈夫。
- 第一引数(必須):入力タイプ [‘text’ ,’number’ ,’password’ ,’email’ ,’file’]などを記載。Typeに指定できない値が入っていてもエラーで止まらない
- 第二引数(必須):name= に続くフィールド名。postで渡す名前になり、Controller の Request を受ける時の名称に使われる
- 第三引数(オプション):フィールドの初期値を表す
- 第四引数(オプション):idやclassを指定するときに利用する。オプションは[ ]の中にカンマ区切りで記載する
inputフィールドタイプの指示については、Fome::input を利用せず直接指定するFomeファサードを持っているためこちらを利用する事が多い。
- Form::input(‘text’,name,null,[class => ‘text’]) => Form::text(‘name’,null,[class => ‘text’])
- Form::input(‘password’,name,null,[class => ‘text’]) => Form::password(‘name’,[class => ‘text’]) ※passwordに初期値は無いため第二引数がClassなどのオプション
- Form::input(‘email’,name,null,[class => ‘text’]) => Form::email(‘name’,null,[class => ‘text’])
- Form::input(‘hidden’,name,null,[class => ‘text’]) => Form::hidden(‘name’,null,[class => ‘text’])
- Form::input(‘url’,name,null,[class => ‘text’]) => Form::url(‘name’,null,[class => ‘text’])
- Form::input(‘file’,name,null,[class => ‘text’]) => Form::file(‘name’,null,[class => ‘text’])
- Form::input(‘number’,name,null,[class => ‘text’]) => Form::number(‘name’,null,[class => ‘text’])
なるほど、Form::number() を試してみたけどエラーが出た理由は引数の数が少なくなったのにinputと同じ引数を利用したことにあった様です。
メチャクチャ沢山あるFormファサード
上に挙げたForm::textの様に、標準的なメソッドはFormファサードを使って呼び出すことができる様です。
- Form::open():HTMLフォームを作成する
- Form::model():モデルをベースにしたフォームを作成する
- Form::close():フォームを閉じる
- Form::label():フォームのラベルを作成する
- Form::input():入力フィールドを作成する
- Form::text():テキスト入力フィールドを作成する
- Form::password():パスワードフィールドを作成する
- Form::hidden():hiddenフィールドを作成する
- Form::number():数値フィールドを作成する
- Form::email():メールアドレス入力フィールドを作成する
- Form::url():URL入力フィールドを作成する
- Form::file():ファイルアップロードのフィールドを作成する
- Form::textarea():テキストエリアを作成する
- Form::select():セレクトボックスを作成する
- Form::selectRange():選択肢の範囲を指定してセレクトボックスを作成する
- Form::selectYear():年を選択するセレクトボックスを作成する
- Form::selectMonth():月を選択するセレクトボックスを作成する
- Form::checkbox():チェックボックスを作成する
- Form::radio():ラジオボタンを作成する
- Form::reset():リセットボタンを作成する
- Form::image():画像ボタンを作成する
- Form::submit():Submitボタンを作成する
- Form::button():ボタンを作成する
- Form::getSessionStore():フォームで利用するセッションクラスを取得する
- Form::token():CSRFトークンを生成する
- Form::getIdAttribute():フィールド名のID属性を取得する
- Form::getValueAttribute():優先度を付けた入力値を取得する
- Form::old():セッションから前の入力値を取得する
- Form::oldInputIsEmpty():以前の入力値が空かどうかを確認する
- Form::getSelectOption():選択オプションを取得する
- Form::setSessionStore():フォームで利用するセッションを設定する
まとめ
オリジナルマクロも呼び出せるとなれば大体の事はViewでForm::コールで済ますことできるかもしれません。
個人的には検索フォームで検索値の読込が1行で済むという点が非常に便利で使い易いと感じています。
-
前の記事
Laravel:月末の日付取得が楽すぎる 2019.04.02
-
次の記事
Laravel:取得した配列を2列に並べる方法 2019.04.12
コメントを残す