ZendX Jquery Decorator - PullRequest
       25

ZendX Jquery Decorator

1 голос
/ 13 октября 2010

Как использовать частичный декоратор в 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 в том же формате. но я не знаю, как реализовать этот интерфейс. спасибо за вашу помощь.

1 Ответ

2 голосов
/ 07 февраля 2011

Это потому, что обычный декоратор ViewHelper не выдает какой-либо правильный код при использовании с ZendX_jQuery. Вы должны использовать один декоратор, который реализует ZendX_JQuery_Form_Decorator_UiWidgetElementMarker, и он есть. UiWidgetElement

  $datePicker->setDecorators(
            array(
                'UiWidgetElement',
                array('ViewScript', array('class' => 'RegElement'))
            )
    );
...