Zend Form:在视图脚本中获取数组元素
我想显示每种语言的标题和内容字段。因此,在表单中,我有:
foreach ($languages as $language)
{
// Add the title element
$title = new Zend_Form_Element_Text($language);
$title->setLabel($translate->_('News Title'))
->setBelongsTo('title');
$this->addElement($title);
// Add the content element
$content = new Zend_Form_Element_Textarea($language);
$content->setLabel($translate->_('News Content'))
->setBelongsTo('content');
$this->addElement($content);
}
如果我以通常的方式渲染表单,它会完美地工作:
echo $this->form;
但是,我想单独渲染每个字段,以在中间包含一些 HTML 和其他 jQuery 内容。我的问题是我无法访问这些元素。我尝试过
foreach ($languages as $language)
{
$this->form->getElement($language);
}
,但它只呈现“内容”元素。我是否覆盖了“标题”元素?
谢谢
I want to display a title and a content field for each language. So, in the form, I have:
foreach ($languages as $language)
{
// Add the title element
$title = new Zend_Form_Element_Text($language);
$title->setLabel($translate->_('News Title'))
->setBelongsTo('title');
$this->addElement($title);
// Add the content element
$content = new Zend_Form_Element_Textarea($language);
$content->setLabel($translate->_('News Content'))
->setBelongsTo('content');
$this->addElement($content);
}
If I render the form in the usual way it works perfectly:
echo $this->form;
However, I want to render each field separately to include some HTML in the middle and other jQuery stuff. My problem is that I cannot manage to access those elements. I tried
foreach ($languages as $language)
{
$this->form->getElement($language);
}
but it only renders 'content' element. Am I overriding 'title' element?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,您正在覆盖 Title 元素。您传递给
new Zend_Form_Element_Text($language);
的参数(在您的情况下为$language
)应该是唯一的。事实上,您可以在需要时使用它来识别和检索元素。要设置参数,您可以执行以下操作:
Yes, you're overriding the Title element. The parameter you pass to
new Zend_Form_Element_Text($language);
($language
in your case) should be unique. Infact you can use it to identify and retrieve the element when you need.To setup the param you can do something like this: