SymfonyのFormオブジェクトに対して後からバリデーションを追加したい
cakePHP的にさくっといけるかなーと思ったら割と面倒だった。
とかやって最後に
てな感じのとき、処理によっては追加でバリデーションを挟みたいなんてことがある。
で、こういう時にactionなりから呼びだす方法をあれこれ試してみて、
てな感じでバリデータ群を拾ってきてあげると
とか書くだけでいろいろいじれることが分かった。
minとかmaxとかがころころ変わる場合とか、bind前に追加のバリデーション設定をしとけばよし。
あとFormオブジェクトで日付を扱う場合は基本mktime()なりのミリ秒値をセットしてやったほうが後々便利。かな。
ついでに。入力値同士で比較したときなんかは
http://symfony.xrea.jp/1.1/forms_book/02-Form-Validation.html
の下のほうにある論理バリデータを使えばいい感じにPOSTデータ同士で比較できる。
symfonyのドキュメントって、なんでこうも少ないんですかね。
本もちらほら読んだけどいまいち十分じゃない。むー。
とりあえずお作法的なところだけでもかっちりしたものが欲しいんだけど。
$this->formObj = new MessageForm();
とかやって最後に
$this->formObj->bind($param);
てな感じのとき、処理によっては追加でバリデーションを挟みたいなんてことがある。
で、こういう時にactionなりから呼びだす方法をあれこれ試してみて、
$validators = $this->formObj->getValidatorSchema()->getFields();
てな感じでバリデータ群を拾ってきてあげると
$validators['memo']->setOption('required', true);
$validators['memo']->setMessage('required', 'ここだけ必須。すんまそん。');
とか書くだけでいろいろいじれることが分かった。
minとかmaxとかがころころ変わる場合とか、bind前に追加のバリデーション設定をしとけばよし。
あとFormオブジェクトで日付を扱う場合は基本mktime()なりのミリ秒値をセットしてやったほうが後々便利。かな。
ついでに。入力値同士で比較したときなんかは
http://symfony.xrea.jp/1.1/forms_book/02-Form-Validation.html
の下のほうにある論理バリデータを使えばいい感じにPOSTデータ同士で比較できる。
symfonyのドキュメントって、なんでこうも少ないんですかね。
本もちらほら読んだけどいまいち十分じゃない。むー。
とりあえずお作法的なところだけでもかっちりしたものが欲しいんだけど。
Comments
add a comment
This blog is gravatar enabled.
Your email adress will never be published.
Comment spam will be deleted!
