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;
}
}
?>
カテゴリー: 日記