tetsunosukeのnotebook

tetsunosukeのメモです

Zend_Form を使ってみている。

Zend Framework の 1.5 がリリースされたとのことで、早速新しい機能を使ってみた。contextSwitchとか結構やりやすくてよい。

ところで Zend_Form なんだけど、 Validation がちょっとうまくいかない感じ。

こんな感じでチェインするところなんかはクールなんだけど

        $name->setLabel('name')
             ->setRequired(true)
             ->addValidator('alnum');

このままだとエラーメッセージが、Zend_Validate_Alnum の $_messageTemplates に規定されている「"'%value%' has not only alphabetic and digit characters"」とかになってしまう。このメッセージを日本語にしようと思ったら、こうするしか方法がないのかな。

まず、自前で Validation クラスを作る。(完全に自作する場合は Zend_Validate_Abstract を継承する)

class MyValidate_Alnum extends Zend_Validate_Alnum
{
    protected $_messageTemplates = array(
        self::NOT_ALNUM => "'%value%' は Alnum じゃない"
    );
}

バリデーターチェインでは、以下のようにする

        $name->setLabel('name')
             ->setRequired(true)
             ->addValidator(new MyValidate_Alnum);


このバリデーションクラス、命名規約的にはどうなんだ。場所もどこにおいていいかわからんから、Controllerクラスと同じファイルにとりあえず新しいクラス作ってテストしたんだけど。たぶん、Myをそれなりの名前(たとえばBasketとかにして、フォルダを分けていくのがいいのだろう。Basket名前空間

ていうか

それ Zend_Translate でできるよ、って感じみたい。ちゃんと検証する。