ホーム > 日記 > EthnaのActionForm

EthnaのActionForm

Ethnaには108式ほどのマニュアルに載ってない知られざる機能があったりなかったりします。
たとえばActionFormには$form_templateというメンバ変数が存在します。
各ActionFormで定義していた日本語名や制約をここにまとめておくと管理しやすく楽です。


<?php
/**
 *  Memberフォームの実装
 *
 *  @author     cockok
 *  @access     public
 *  @package    Sample
 */
class Sample_MemberForm extends Sample_ActionForm
{
    /** @var    bool    バリデータにプラグインを使うフラグ */
    var $use_validator_plugin = true;

    /** @var    array   フォーム値定義(デフォルト) */
    var $form_template = array(
       'user_name' => array(
            'type'          => VAR_TYPE_STRING,
            'form_type'     => FORM_TYPE_TEXT,
            'name'          => 'ユーザ名',
            'regexp'        => '/^[a-zA-Z][\w_\-]+$/',
            'max'           => 24,
            'min'           => 6,
        ),
        'mail' => array(
            'type'          => VAR_TYPE_STRING,
            'form_type'     => FORM_TYPE_TEXT,
            'name'          => 'メールアドレス',
            'custom'        => 'checkMailaddress',
        ),
        'randomkey' => array(
            'type'          => VAR_TYPE_STRING,
            'name'          => '一時キー',
            'max'           => 30,
            'min'           => 30,
        ),
        'login_name' => array(
            'type'          => VAR_TYPE_STRING,
            'form_type'     => FORM_TYPE_TEXT,
            'name'          => 'ユーザ名またはメールアドレス',
            'min'           => 6,
        ),
        'password' => array(
            'type'          => VAR_TYPE_STRING,
            'form_type'     => FORM_TYPE_PASSWORD,
            'name'          => 'パスワード',
            'max'           => 32,
            'min'           => 6,
        ),
        'password_conf' => array(
            'type'          => VAR_TYPE_STRING,
            'form_type'     => FORM_TYPE_PASSWORD,
            'name'          => 'パスワード(確認)',
            'max'           => 32,
            'min'           => 6,
            'custom'        => 'checkPassword',
        ),
        'sticky' => array(
            'type'          => VAR_TYPE_INT,
            'form_type'     => FORM_TYPE_CHECKBOX,
            'name'          => '次から自動的にログインする',
            'option'        => array(1 => ''),
        ),
        'url' => array(
            'form_type'     => FORM_TYPE_TEXT,
            'name'          => 'URL',
        ),
    );

    /**
     *  チェックメソッド: 確認用パスワード
     *
     *  @access public
     *  @param  string  $name   フォーム項目名
     */
    function checkPassword($name)
    {
        if ($this->form_vars['password'] != $this->form_vars[$name]) {
            $this->ae->add($name, "{form}が一致しません", E_FORM_CONFIRM);
        }
        return null;
    }
}
?>

カテゴリー: 日記 タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。