1

Jquery Element で部分デコレータを使用する方法

フォーム要素に次のコードを使用します。

    $title = new Zend_Form_Element_Text('title');
    $title->setRequired(true)
            ->setAttrib('class', 'inputbox')
            ->setLabel('Title');
    $title->viewScript = 'RegElement.phtml';
    $title->setDecorators(
            array(
                array('ViewScript', array('class' => 'RegElement'))
            )
    );

しかし、私がJquery Elementを使用するとき、それを実装する方法がわかりません:

    $datePicker = new ZendX_JQuery_Form_Element_DatePicker(
                    "datePicker1", array("label" => "Date:")
    );
    $datePicker->viewScript = 'RegElement.phtml';
    $datePicker->setDecorators(
            array(
                array('ViewScript', array('class' => 'RegElement'))
            )
    );

    //views/scripts/RegElement.phtml
    <li class="row <?php echo $this->class ?>">
        <div class="cont-error">
         <?php echo $this->formErrors($this->element->getMessages()); ?>
        </div>
        <div class="rowfields">
           <?php echo $this->formLabel($this->element->getName(),
                      $this->element->getLabel()) ?>
        <?php
            echo $this->{$this->element->helper}(
                 $this->element->getName(),
                 $this->element->getValue(),
                 $this->element->getAttribs()
             )
         ?>
        </div>
        <div class="hint"><?php echo $this->element->getDescription() ?></div>
    </li>

そして、このエラーを表示します:

Warning: Exception caught by form: Cannot render jQuery form element without at least one decorator implementing the 'ZendX_JQuery_Form_Decorator_UiWidgetElementMarker' interface.

同じ形式でdatePickerを表示する必要があります。しかし、このインターフェイスを実装する方法がわかりません。ご協力いただきありがとうございます。

4

1 に答える 1

2

これは、通常の ViewHelper デコレータを ZendX_jQuery と一緒に使用すると、適切なコードが生成されないためです。ZendX_JQuery_Form_Decorator_UiWidgetElementMarker を実装するデコレータを 1 つ使用する必要があり、1 つ提供されています。UiWidgetElement

  $datePicker->setDecorators(
            array(
                'UiWidgetElement',
                array('ViewScript', array('class' => 'RegElement'))
            )
    );
于 2011-02-07T07:24:13.413 に答える