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>

表示されるページ

上記にアクセスすると以下のページが表示される。

f:id:BTT:20120613125915p:plain

『radio』や『checkbox』を生成するのに、項目リストを配列で渡しているが、キーが「0」のものが『checked』になる模様。

以下のような書き方をすれば、初期選択がなくなる。

$check_list = array(1 => '映画鑑賞', 2 => '散歩', 3 => 'その他');


add時にclass等を指定出来るとは言え、正直...使う場面あるの?