FuelPHPでフォーム作成1(Fieldset)
フォームの自動生成やら入力チェック、値の保持等をやってくれるというFieldsetを試してみる。
手始めに、出力されるHTMLを確認する為、入力チェック無しのフォームを生成
Controller
Fieldsetのインスタンスを生成し、『add』でパーツを追加していく。
add('名前', 'ラベル名', '各種属性');
テンプレートに渡す際、『set』を使用すると、フォームのHTMLが全てエスケープされてしまう為、『set_safe』を使用。
<?php class Controller_Myform extends Controller { public function action_index() { $view = View::forge('myform'); $form = Fieldset::forge(); // input $form->add('name', 'お名前', array('maxlength' => 8)); // password $form->add('password', 'パスワード', array('type' => 'password')); // selectbox $select_list = array('タイプ1', 'タイプ2'); $form->add('type', 'タイプ', array('type' => 'select', 'options' => $select_list)); // radio $radio_list = array('男性', '女性'); $form->add('gender', '性別', array('type' => 'radio', 'options' => $radio_list)); // checkbox $check_list = array('映画鑑賞', '散歩', 'その他'); $form->add('hobby', '趣味', array('type' => 'checkbox', 'options' => $check_list)); $form->add('submit', '', array('type' => 'submit', 'value' => '送信')); $view->set_safe('form', $form->build(Uri::create('myform'))); return $view; } }
View
view側は、controllerでセットされたフォームをechoするだけ。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <?php echo $form ?> </body> </html>
表示されるページ
上記にアクセスすると以下のページが表示される。
『radio』や『checkbox』を生成するのに、項目リストを配列で渡しているが、キーが「0」のものが『checked』になる模様。
以下のような書き方をすれば、初期選択がなくなる。
$check_list = array(1 => '映画鑑賞', 2 => '散歩', 3 => 'その他');
add時にclass等を指定出来るとは言え、正直...使う場面あるの?