1

Zend_Form がデフォルトでフォーム要素をレンダリングする方法に不満があり、Zend_Form から継承したヘルパー クラスをインスタンス化することによって生成されたすべてのフォームに対してそれをオーバーライドして、すべてのフォームで行っていることを処理したいと考えています。

私が加えたい変更は、デコレーターで合理的/可能であるよりも複雑に見えるので、カスタム HTML テンプレートを使用してこれを達成したいと思います。ここで、フォーム値をカスタム HTML スニペットにプラグインします。

クラスによってレンダリングされるすべての HTML 要素を HTML テンプレートを使用するように設定するにはどうすればよいですか? Zend_Form がデフォルトでレンダリングするものを取得するには、テンプレートからどのプロパティ/関数を呼び出す必要がありますか? 最後に、コードで作成する各入力要素に手動でテンプレートを設定することなく、これを行うことをお勧めします。

4

3 に答える 3

1

Zend_Formデフォルトのクラスを独自のクラスで拡張できますCustom_Form。メソッドで、init()デフォルトの要素デコレーターを上書きします。ここに私のコードスニペット:

//class Custom_Form extends Zend_Form
public function init()
{
    $this->setElementDecorators(
            array(array('ViewScript', array('viewScript' => '/controller_name/forms/fields/input-text.phtml'))),
            array('email', 'firstname', 'lastname')
        );
}
于 2013-04-24T07:06:35.333 に答える