Zend_Dojo_Form无法在布局中呈现

时间:2010-05-19 21:07:33

标签: zend-framework dojo zend-form

我有一个关于将Zend_Dojo_Form添加到Zend_layouts的快速问题。

我有一个Zend_Dojo_Form,我希望在用于特定控制器的布局中显示。我可以在没有任何问题的情况下将表单添加到布局中,但是dojo元素无法呈现,就像我将表单添加到标准视图时一样。

为什么会出现这种情况?我是否需要对布局执行某些操作,以便在布局中启用此嵌入表单的组件。使用此布局在视图中添加的任何其他dojo启用表单都可以正常工作。

我的表单以通常的方式创建:

class QuickAddJobForm extends Zend_Dojo_Form{


public function init(){

    $this->setName('quickaddjobfrm')
        ->setMethod('post')
        ->setAction('/addjob/start/);


    /*We now create the elements*/
    $jobTitle = new Zend_Dojo_Form_Element_TextBox('jobtitle',
        array(
            'trim' => true              
        )
    );
    $jobTitle->setAttrib('style', 'width:200px;')
        ->addFilter('StripTags')
        ->removeDecorator('DtDdWrapper')
        ->removeDecorator('HtmlTag')
        ->removeDecorator('Label');

      ....
  $this->addElements(array($jobTitle, ....));

在控制器中,我在init函数中声明布局和表单:

 public function init(){
   $this->_helper->layout->setLayout('add-layout');
   $form = new QuickAddJobForm();
   $form->setDecorators(array(array('ViewScript', array('viewScript' => 'quickAddJobFormDecorator.phtml'))));

 $this->_helper->layout()->quickaddjob = $form;

在我的布局中我想要的表格:

  echo $this->layout()->quickaddjob;

为什么在布局中添加此表单无法呈现/添加Dojo元素?目前正在显示的是文本框,而不是其他一些组件,如ComboBoxes / FilteringSelects等......

提前致谢。

3 个答案:

答案 0 :(得分:0)

我不是100%当然,但我认为你必须将Dojo添加到你的应用程序中。尝试

 $this->dojo()->enable(); 
 echo $this->dojo(); 
你的Layout.phtml中的

答案 1 :(得分:0)

答案 2 :(得分:0)

如果在布局中使用Zend_Dojo_Forms,请务必在调用

之前渲染它们

echo $ this-> dojo();

你可以用这样的东西做到这一点:

//in HTML-Head:
$content = $form->render();
echo $this->dojo();

//later...
echo $content;