フォーム ライブラリ

Ziu 付属のフォームライブラリです。
フォームエレメントの生成や選択リストへのデータバインドなど、入力フォームを作成に便利な機能を提供します。

  1. 設定
  2. 使い方
  3. メソッドリファレンス

設定

フォームライブラリを利用するための設定を行ないます。

単体で利用の設定方法

本フォームライブラリは、単体で使用することができます。

$fm = new Form;
$fm->config(array(
        'except_values' => 'action',
        'preset_values' => array(
            'gender' => array(1 => '男性', 2 => '女性'),
        ),
))->values($request);
Ziu で利用の設定方法

Ziu での利用では、ロジッククラスにメソッドを定義し、その内で初期化します。(主に init() メソッドなどで)

$fm = lib('form')->config(array(
        'except_values' => 'action',
        'preset_values' => array(
            'gender' => array(1 => '男性', 2 => '女性'),
        ),
))->values($this->req);

設定項目

項目 初期値 説明
except_values string なし 除外パラメータ名を指定します。hidden() メソッドによる一括生成の対象外となります。カンマ区切りで複数指定が可能です。
file_extend_mode boolean TRUE file() メソッドの拡張モードの有効/無効を指定します。有効の場合、file() メソッドのコール時に規定のhiddenタグが自動挿入されます。
file_preview_text string [Preview] fire_preview() メソッドでプレビューリンクのテキストを指定します。
separator string    checkbox()radio() メソッドにて複数生成する項目間のセパレータ文字を指定します。
preset_values array なし checkbox()radio()select() メソッドの選択項目をプリセットリストとして指定します。

file_extend_mode について
file('sample') メソッドで引数に sample を指定し実行した場合、設定により以下の挙動になります。

  • TRUE 設定
    アップロードライブラリとの連携モードとなり、3つのエレメントが作成されます。
    <input type="file" name="upl_sample" value="" /> : ファイル指定用 (プレフィックス : upl_)
    <input type="hidden" name="tmp_sample" value="" /> : 一時的に値を保持用 (プレフィックス : tmp_)
    <input type="hidden" name="sample" value="" /> : 元の値を保持用

  • FALSE 設定
    通常のエレメント1つが作成されます。
    <input type="file" name="sample" value="" /> : ファイル指定用

使い方

Ziu では、ロジッククラスを利用して、フォームライブラリを初期化します。

ロジッククラス

public function init()
{
    $this->req = lib('request')->post();
    render_set(array(
        'f' => lib('form')->config(array(
            'except_values' => 'action',
            'preset_values' => array(
                'gender' => array(1 => '男性', 2 => '女性'),
            ),
        ))->values($this->req);
    ), FALSE);
}

values() メソッドでリエクストライブラリで取得したPOSTリクエスト値 $this->req をセットしフォームライブラリにバインドしています。

ビューテンプレート(入力画面)

<?= $f->open(uri('member/entry/confrim'), 'POST') ?>
<table>
    <tr>
        <th>名前</th><td><?= $f->text('name') ?></td>
    </tr>
    <tr>
        <th>性別</th><td><?= $f->radio('gender') ?></td>
    </tr>
    <tr>
        <td colspan="2">
            <?= $f->submit('action', '確認') ?>
            <?= $f->submit('action', 'リセット') ?>
        </td>
    </tr>
</table>
<?= $f->close() ?>

エレメントメソッドでフォームエレメントを構築していきます。

ビューテンプレート(確認画面)

<?= $f->open(uri('member/entry/execute'), 'POST') ?>
<table>
    <tr>
        <th>名前</th><td><?= $f->fetch('name') ?></td>
    </tr>
    <tr>
        <th>性別</th><td><?= ((string)$f->fetch('gender') == 1 ? '男性' : '女性') ?></td>
    </tr>
    <tr>
        <td colspan="2">
            <?= $f->submit('action', '戻る') ?>
            <?= $f->submit('action', '登録') ?>
        </td>
    </tr>
</table>
<?= $f->close() ?>

fetch() メソッドでバインドされた値を取得することができます。

(注意)
エレメントメソッドの実行は、チェーンメソッド形式でフォームオブジェクト自身が戻ります。
fetch() メソッドや、各エレメントメソッドの文字列値を取得する際には、(string) でキャストする必要があります。
PHPでは文字列処理(echo();など)で自動キャストが行われるので、キャスト処理が不要な場合があります。

メソッドリファレンス

フォームライブラリのメソッドリファレンスです。

  1. 設定メソッド
  2. フォームエレメントメソッド
    • open() : <form> タグを生成
    • close() : </form> タグを生成
  3. 非表示エレメントメソッド
    • hidden() : <input type="hidden"> タグを生成
  4. 入力エレメントメソッド
    • text() : <input type="text"> タグを生成
    • password() : <input type="password"> タグを生成
    • tel() : <input type="tel"> タグを生成
    • email() : <input type="email"> タグを生成
    • url() : <input type="url"> タグを生成
    • number() : <input type="number"> タグを生成
    • textarea() : <textarea> タグを生成
  5. 選択エレメントメソッド
    • radio() : <input type="radio"> タグを生成
    • checkbox() : <input type="checkbox"> タグを生成
    • select() : <select> タグを生成
  6. ファイルエレメントメソッド
  7. ボタンエレメントメソッド
    • button() : <input type="button"> タグを生成
    • buttonquote() : <button> タグを生成
    • submit() : <input type="submit"> タグを生成
    • reset() : <input type="reset"> タグを生成
    • image() : <input type="image"> タグを生成
  8. その他メソッド

設定メソッド

config(array $config)

フォームライブラリの初期設定をします。

戻り値

型 : object Form

引数値
項目 内容
$config array 設定を配列で指定

$config に指定する設定項目については、設定を参照して下さい。

例) lib('form')->config(array('except_values' => 'action'));

values(array $values)

フォームライブラリにバインドするフォーム値を指定します。

戻り値

型 : object Form

引数値
項目 内容
$values array バインドするフォーム値

例) lib('form')->values(array('name' => ''));

▲リファレンスTOP

フォームエレメントメソッド

open($action, $method = 'post', $hidden = FALSE)

<form> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$action string フォーム送信するURL
$method string フォーム送信メソッド (postgetfile のいづれか指定)
$hidden boolean hidden() メソッドの内部実行フラグ

$methodfile を指定するとファイル送信メソッド になります。
ファイル送信メソッド : <form action="..." method="post" enctype="multipart/form-data">

$hiddenTRUE にすると、内部で hidden() メソッドが実行されバインドされているフォーム値が自動的に hidden タグで生成されます。(主に確認画面で利用)

例) $f->open('member/entry');

close()

</form> タグを生成します。

戻り値

型 : object Form

引数値

なし

例) $f->close();

▲リファレンスTOP

非表示エレメントメソッド

hidden($name = TRUE, $value = '')

<input type="hidden"> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$name string エレメント名
$value string フォーム値

$name を省略した場合、バインドされている値を全てに対して生成します。
$value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。

例) $f->hidden('name', 'テスト ユーザー');

▲リファレンスTOP

入力エレメントメソッド

text($name, $value = '')

<input type="text"> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$name string エレメント名
$value string フォーム値

$value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。

例) $f->text('name');

password($name, $value = '')

<input type="password"> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$name string エレメント名
$value string フォーム値

$value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。

例) $f->password('login_pw');

tel($name, $value = '')

<input type="tel"> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$name string エレメント名
$value string フォーム値

$value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。

例) $f->tel('phone');

email($name, $value = '')

<input type="email"> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$name string エレメント名
$value string フォーム値

$value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。

例) $f->email('address');

url($name, $value = '')

<input type="url"> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$name string エレメント名
$value string フォーム値

$value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。

例) $f->url('site_url');

number($name, $value = '')

<input type="number""> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$name string エレメント名
$value string フォーム値

$value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。

例) $f->number('age');

textarea($name, $value = '')

<textarea> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$name mixed エレメント名
$value string フォーム値

$value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。

例) $f->textarea('message');

▲リファレンスTOP

選択エレメントメソッド

radio($name, $value = '', $label = '')

<input type="radio"> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$name mixed エレメント名
$value string フォーム値
$label string ラベル名

$name に文字列、又は配列を指定することができます。

  • $name に配列リストを指定した場合
    リスト : array('エレメント名' => array('値1' => 'ラベル名1', '値2' => 'ラベル名2', ...))
    プリセットリストを使用せず、直接リストを指定することができます。

  • $name に文字列でエレメント名を指定した場合
    $value は通常省略しバインドされているプリセットリストとフォーム値をセットします。指定した場合は優先されます。
    $label は通常省略しバインドされているプリセットリストを利用します。指定した場合は優先されます。

例) $f->radio('gender');

checkbox($name, $value = '', $label = '')

<input type="checkbox"> タグを生成します。

(注意)
エレメント名にはブラケット型の配列として強制的に指定されます。
$f->checkbox('favorites'); でメソッド実行した場合

<input type="checkbox" name="favorites[]" value="xxx" />

戻り値

型 : object Form

引数値
項目 内容
$name mixed エレメント名
$value string フォーム値
$label string ラベル名

引数値については radio() メソッドと同じ動作になります。

例) $f->checkbox('favorites');

select($name, array $option = array(), $value = '')

<select> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$name mixed エレメント名
$option array オプションリスト
$value string フォーム値

$option は通常省略しバインドされているプリセットリストを利用します。指定した場合は優先されます。 $value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。

例) $f->select('pref');

▲リファレンスTOP

ファイルエレメントメソッド

file($name, $value = '')

<input type="file"> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$name string エレメント名
$value string フォーム値

$value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
ただしHTMLの仕様上、フォーム値を指定(<input type="file" value="/img/logo.jpg"> など)しても動作しません。

初期設定の file_extend_modeTRUE の場合、アップロードライブラリと連携するタグが同時に生成されます。
詳しくは、設定を参照して下さい。

例) $f->file('image');

file_preview($type, $name, $real, $temp = '')

file() メソッドでファイル送信フォームを利用の時に、プレビューリンク/画像を生成します。

戻り値

型 : object Form

引数値
項目 内容
$type string 表示タグ名 (aimg)
$name string エレメント名
$real string 正規保存フォルダURIを指定したバインド変数名
$temp string 一時保存フォルダURIを指定したバインド変数名

例) $f->file_preview('img', 'image', 'real_uri', 'temp_uri');

▲リファレンスTOP

ボタンエレメントメソッド

button($name, $value = '')

<input type="button"> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$name string エレメント名
$value string フォーム値

$value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。

例) $f->button('確認ボタン');

buttonquote($name, $value = '')

<button> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$name string エレメント名
$value string フォーム値

$value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。

例) $f->buttonquote('開く');

submit($name, $value = '')

<input type="submit"> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$name string エレメント名
$value string フォーム値

$value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。

例) $f->submit('action', '送信');

reset($name, $value = '')

<input type="reset"> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$name string エレメント名
$value string フォーム値

$value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。

例) $f->reset('action', 'リセット');

image($name, $value = '')

<input type="image"> タグを生成します。

戻り値

型 : object Form

引数値
項目 内容
$name string エレメント名
$value string フォーム値

$value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。

例) $f->image('thumbnail');

▲リファレンスTOP

その他メソッド

attributes(array $attr)

エレメントメソッドで生成したタグに属性を付加します。

戻り値

型 : object Form

引数値
項目 内容
$attr array 属性リスト

例) $f->text('name')->attributes(array('class' => 'w200'));

wrap($pre, $suf)

エレメントメソッドで生成したタグに対して指定の文字列(HTMLタグ等)で囲みます。
エレメントリストを生成する radio()checkbox() メソッドでは各エレメントに対して囲みます。

戻り値

型 : object Form

引数値
項目 内容
$pre string 前部の文字列
$suf string 後部の文字列

例) $f->radio('genre')->wrap('<div class="small">', '</div>');

outline($rows = 1, $cols = 1, $attr = array())

エレメントメソッドで生成したタグに対して <table> タグで表組みをします。
エレメントリストを生成する radio()checkbox() メソッドでは各エレメントが表組み対象となります。

戻り値

型 : object Form

引数値
項目 内容
$rows integer 行数
$cols integer 列数
$attr array テーブル属性値

例) $f->checkbox('favorites')->wrap(5, 3, array('class' => 'w300'));

fetch($name, $value = '', $sanitize = TRUE)

バインドされているエレメントのフォーム値を取得します。

戻り値

型 : object Form

引数値
項目 内容
$name string エレメント名
$value string フォーム値
$sanitize boolean サニタイズフラグ

$value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。

例) $f->fetch('name');

preset($name, $value = '', $sanitize = TRUE)

プリセットバリューのラベル文字列を取得します。

戻り値

型 : object Form

引数値
項目 内容
$name string エレメント名(プリセット名)
$value string フォーム値
$sanitize boolean サニタイズフラグ

$value は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。

例) $f->preset('gender', 1); // 男

▲リファレンスTOP