Closed ucym closed 9 years ago
このクラスにより、単純な"登録と編集"ページの再利用性が向上します。
Form::bind()によりデータの入力元を選ばなくなるため、登録内容の復元はもちろん、 フォームのname属性に対応するように変換されたデータベース上のデータをフォームに展開することが可能となります。
<?php require 'bs.php'; // POST内容をフォームに割り当て Form::bind(Input::post()); // また、第二引数にフォーム名をつけられる: Form::bind(Input::post(), 'regist'); // -> ページ内に複数のフォームが存在することを想定。 // フォーム名が指定されない時は "default"をフォーム名とする // 職業の一覧を $work_typesに取得します $work_types = get_worktypes(); ?> <body> <form method="post"> <!-- 各フォーム生成メソッドは 自動でHTMLをprintする。 --> <!-- textメソッド 第1引数はフォームのname属性を指定 もし割り当てられた値があれば、value属性を復元する アイデア: IDとクラスを第1引数で指定可能にする? ex : Form::text('user#id.class.class2') 第2引数は、"属性名" => "値"で属性を指定できる 連想配列が渡された時、値は自動でHTMLエスケープされる コード短縮のため、文字列でも指定可能にする ex : Form::text('user', 'attr="value" attr2="value"') 第3引数にインスタンス名を指定できる ex: Form::text('user', array('class' => "form-control"), 'regist') --> <label>ユーザー名: <?php Form::text('user', array('class' => "form-control")) ?></label> <label>メールアドレス: <?php Form::email('mail') ?></label> 性別 <p> <!-- radio, input は 値が一致すればchecked属性を付加する 第1引数にname属性の値、第2引数にvalueの値をうけつけ、 第3引数以降はtextメソッドの第2引数以降と同じとする --> <label><?php Form::radio('sex', 'male') ?> 男</label> <label><?php Form::radio('sex', 'female') ?> 女</label> </p> 職業 <!-- selectも 値が一致した要素にselected属性を付加する 第2引数に、選択項目の配列を受け取る。 この配列は以下の形式とする array( '表示名' => "value属性の値", // あるいは // '表示名' => array("value属性の値", '属性名' => '値'), '表示名2' => "value属性の値2", ); 値に配列が渡された時、0番目の要素となるものをvalue属性の値として使う。 もし0番目の要素がなければ 添字"value"を参照する。 それでも値がなければ例外をスローする。 この配列は以下のように展開される <option value="value属性の値">表示名</option> (値に配列を受け取った時) <option value="value属性の値" '属性名'='値'> <option value="value属性の値2">表示名2</option> 第3引数は、渡された配列に該当する値がないときの挙動を指定する。 標準は IGNORE。 CREATE : 選択肢を生成する IGNORE : 値がないものとして扱う STRICT : 例外をスローする 第4引数以降はtextメソッドの第2引数以降と同じとする。 --> <label>職業: <?php Form::select('work_type', $work_types) ?> </label> </form> </body>
Feature
(text, checkbox, radio, textarea, select....)
Benefit
このクラスにより、単純な"登録と編集"ページの再利用性が向上します。
Form::bind()によりデータの入力元を選ばなくなるため、登録内容の復元はもちろん、 フォームのname属性に対応するように変換されたデータベース上のデータをフォームに展開することが可能となります。
Ideal code sample