Laravel:{{Form::input()}} を使ってnumberの入力フィールドを作る

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

■View

■結果

なるほど、知っていればかなり使い勝手のいい奴みたいです。

{{Form::input()}}のType記載は第一引数で

さて、やりたかったFormファサードを使ったType=’number’の指示方法です。

Form::input() の第一引数にtypeを指定する

なるほど、お手本にさせて頂いた記載方法では第一因数が【’検索する’】と文字が記載されていたので全く気にかけていませんでした。

お~簡単だ。

これが出来ると、Controllerから受けた検索フィールドの値をif文使ってある時無い時分けてなんてことしなくても大丈夫。

  1. 第一引数(必須):入力タイプ [‘text’ ,’number’ ,’password’ ,’email’ ,’file’]などを記載。Typeに指定できない値が入っていてもエラーで止まらない
  2. 第二引数(必須):name= に続くフィールド名。postで渡す名前になり、Controller の Request を受ける時の名称に使われる
  3. 第三引数(オプション):フィールドの初期値を表す
  4. 第四引数(オプション):idやclassを指定するときに利用する。オプションは[ ]の中にカンマ区切りで記載する

inputフィールドタイプの指示については、Fome::input を利用せず直接指定するFomeファサードを持っているためこちらを利用する事が多い。

  1. Form::input(‘text’,name,null,[class => ‘text’])  => Form::text(‘name’,null,[class => ‘text’])
  2. Form::input(‘password’,name,null,[class => ‘text’])  => Form::password(‘name’,[class => ‘text’]) ※passwordに初期値は無いため第二引数がClassなどのオプション
  3. Form::input(‘email’,name,null,[class => ‘text’])  => Form::email(‘name’,null,[class => ‘text’])
  4. Form::input(‘hidden’,name,null,[class => ‘text’])  => Form::hidden(‘name’,null,[class => ‘text’])
  5. Form::input(‘url’,name,null,[class => ‘text’])  => Form::url(‘name’,null,[class => ‘text’])
  6. Form::input(‘file’,name,null,[class => ‘text’])  => Form::file(‘name’,null,[class => ‘text’])
  7. Form::input(‘number’,name,null,[class => ‘text’])  => Form::number(‘name’,null,[class => ‘text’])

なるほど、Form::number() を試してみたけどエラーが出た理由は引数の数が少なくなったのにinputと同じ引数を利用したことにあった様です。

メチャクチャ沢山あるFormファサード

上に挙げたForm::textの様に、標準的なメソッドはFormファサードを使って呼び出すことができる様です。

  1. Form::open():HTMLフォームを作成する
  2. Form::model():モデルをベースにしたフォームを作成する
  3. Form::close():フォームを閉じる
  4. Form::label():フォームのラベルを作成する
  5. Form::input():入力フィールドを作成する
  6. Form::text():テキスト入力フィールドを作成する
  7. Form::password():パスワードフィールドを作成する
  8. Form::hidden():hiddenフィールドを作成する
  9. Form::number():数値フィールドを作成する
  10. Form::email():メールアドレス入力フィールドを作成する
  11. Form::url():URL入力フィールドを作成する
  12. Form::file():ファイルアップロードのフィールドを作成する
  13. Form::textarea():テキストエリアを作成する
  14. Form::select():セレクトボックスを作成する
  15. Form::selectRange():選択肢の範囲を指定してセレクトボックスを作成する
  16. Form::selectYear():年を選択するセレクトボックスを作成する
  17. Form::selectMonth():月を選択するセレクトボックスを作成する
  18. Form::checkbox():チェックボックスを作成する
  19. Form::radio():ラジオボタンを作成する
  20. Form::reset():リセットボタンを作成する
  21. Form::image():画像ボタンを作成する
  22. Form::submit():Submitボタンを作成する
  23. Form::button():ボタンを作成する
  24. Form::getSessionStore():フォームで利用するセッションクラスを取得する
  25. Form::token():CSRFトークンを生成する
  26. Form::getIdAttribute():フィールド名のID属性を取得する
  27. Form::getValueAttribute():優先度を付けた入力値を取得する
  28. Form::old():セッションから前の入力値を取得する
  29. Form::oldInputIsEmpty():以前の入力値が空かどうかを確認する
  30. Form::getSelectOption():選択オプションを取得する
  31. Form::setSessionStore():フォームで利用するセッションを設定する

まとめ

オリジナルマクロも呼び出せるとなれば大体の事はViewでForm::コールで済ますことできるかもしれません。

個人的には検索フォームで検索値の読込が1行で済むという点が非常に便利で使い易いと感じています。