Zend_Form_Decorator_PrepareElements

雑感

http://d.hatena.ne.jp/noopable/20090117/1232166473
この話との関連でもあるんだが、
ZF 1.7.3になって
Zend_Form_Decorator_PrepareElementsが用意された。
これはあきらかにデコレーターではないんだが、まぁ、デコレーターとして登録してあると便利ではある。

incubatorをこまめに覘いていればいいんだけど、リリース直後の発見というのも新鮮で楽しい。

具体的には

配布していただいた日本語版chmから転載すると

フォーム、表示グループそしてサブフォームは、要素のコレクションです。 ViewScript デコレータをフォームやサブフォームで使用する際に、 ビューオブジェクトやトランスレータ、完全修飾名 (サブフォームの配列記法で定義されるもの) を再帰的に設定できたら便利です。 'PrepareElements' デコレータはそのためのものです。 一般的には、これをリスト内の最初のデコレータとして設定します。


とのこと。まさにそれが欲しかったわけです。
このデコレーターが存在する以前だと、フォームにサブフォームを登録する際に、親フォームで指定してあるtranslatorやviewは自動的に継承されないので、カスタマイズしている場合には手動で取り次がなければいけない。(ということは継承していなくても取り次ぐコードにしておかなければいけない)。これをPrepareElementsデコレーターが解決してくれるというわけだ。
しかし引き継ぎたくない部分だけ無効にする、っつうわけにはいかないところが・・・