Ethnaでは$form_templateという便利な機能がありますが、このプロパティ自体を継承してしまうと親の$form_templateをつぶしてしまいます。
Ethna初心者がよく陥る罠なので気をつけましょう。
例えば親クラスで$form_templateを定義して、
Sample_ActionForm.php
class Sample_ActionForm extends Ethna_ActionForm
{
public $form_template = array(
'mailaddress' => array(
'name' => 'メールアドレス',
'required' => true,
'max' => 255,
'filter' => FILTER_HW,
'custom' => 'checkMailaddress',
'form_type' => FORM_TYPE_TEXT,
'type' => VAR_TYPE_STRING,
),
'password' => array(
'name' => 'パスワード',
'required' => true,
'max' => 255,
'filter' => FILTER_HW,
'form_type' => FORM_TYPE_TEXT,
'type' => VAR_TYPE_STRING,
),
);
}
子クラスで
Child_ActionForm.php
class Child_ActionForm extends Sample_ActionForm
{
public $form_template = array(
'mailaddress' => array(
'required' => false,
),
);
}
このようなことをしてしまうと、
子クラスが親クラスの$form_templateを完全につぶしてしまうので、
親クラスの定義は一切引き継がれません。
この状態で孫クラスで、
Hoge_ActionForm.php
class Hoge_ActionForm extends Child_ActionForm
{
public $form = array(
'mailaddress' => array(),
'password' => array(
);
}
と書いた場合、孫クラスはpasswordの定義を再利用することはできません。(mailaddressについてもほぼ何も定義してないも同然になってしまいます)