我有一个关于将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等......
提前致谢。
答案 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;