ucym / CodeLapse

Fast coding for Small-scale PHP projects.
http://ucym.github.io/CodeLapse/
0 stars 1 forks source link

[Restored issue] Add new feture "Form" #6

Closed ucym closed 9 years ago

ucym commented 9 years ago

Feature

このクラスにより、単純な"登録と編集"ページの再利用性が向上します。

Form::bind()によりデータの入力元を選ばなくなるため、登録内容の復元はもちろん、 フォームのname属性に対応するように変換されたデータベース上のデータをフォームに展開することが可能となります。

Ideal code sample

<?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>