1

私のフォームでは、これが必要です:

<li class  ="af_title"><div>Contact form</div></li>

たとえば、テキスト フィールドが必要な場合は、Zend_Form_Element_Text を作成し、HtmlTag デコレータをその周りにラップするだけです。

質問:

1) div フォーム要素を生成して、デコレータをラップできるようにするにはどうすればよいですか?

2)うーん。- 上記の要素のコンテンツを「お問い合わせフォーム」に設定するにはどうすればよいですか?

ありがとう:)

4

1 に答える 1

4

div中にあるお問い合わせフォームをラップするに<li class ="af_title">は、次のようにします。

$yourForm = new YourForm();
$yourForm->addDecorator(array('div' => 'HtmlTag'), array('tag' => 'div'));
$yourForm->addDecorator(array('li' => 'HtmlTag'), array('tag' => 'li', 'class' => 'af_title'));

編集:

あなたはdivフォーム要素について話しているようです。そのような要素は存在しませんが、簡単に作成できます。このためには、新しいフォーム要素(つまり、div要素)と、htmlの生成を処理するフォームビューヘルパーの2つが必要です。私は、これら2つの要素の簡単な例を準備して、私が何を意味するかを示すことができました。

APPLICATION_PATHのDiv.php。/ forms / Element

class My_Form_Element_Div extends Zend_Form_Element {
     /**
     * Default form view helper to use for rendering
     * @var string
     */
    public $helper = 'formDiv';

    public function __construct($spec, $options = null) {
        parent::__construct($spec, $options);
        $this->removeDecorator('label');
        $this->removeDecorator('htmlTag');

    }

}

APPLICATION_PATHのFormDiv.php。/ views / helpers

class My_View_Helper_FormDiv extends Zend_View_Helper_FormElement {


    public function formDiv($name, $value = null, $attribs = null) {  

        $class = '';

        if (isset($attribs['class'])) {
             $class = 'class = "'. $attribs['class'] .'"';
        }

        return "<li $class><div>$value</div></li>";
    }

}

これにより、次のように、divフォーム要素をinit()メソッドの任意のフォーム要素に追加できます。

    $div = new My_Form_Element_Div('mydiv');
    $div->setValue('Contact form')->setAttrib('class', 'af_title');
    $this->addElement($div);
于 2011-02-26T03:24:02.663 に答える