2010-10-13 101 views
1

如何在jQuery的元素使用部分装饰ZendX jQuery的装饰

我使用的表单元素验证码:

$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的元素我不知道如何实现它:

$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。但我不知道如何实现这个接口。 感谢您的帮助。

回答

2

这是因为常规ViewHelper装饰器在与ZendX_jQuery一起使用时不会生成一些正确的代码。 你必须使用一个实现ZendX_JQuery_Form_Decorator_UiWidgetElementMarker的装饰器,并且有一个提供。 UiWidgetElement

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