我想使用视图脚本来渲染我的zend窗体,因为它似乎是 控制窗体布局/设计的最佳方式,同时仍然使用Zend_Elements类。在嵌套子窗体上使用ViewScript装饰器(Zend窗体)
从视图脚本中,我使用$this->element->getElement('elementName')
呈现元素。
我遇到了元素名称的问题。这实际上是表单内子表单内的子表单。
当我使用FormElements装饰器时,元素的完全限定名称是form [subForm] [subForm] [element],这很好。 我移动到viewScript装饰器,它改变为subForm [subForm] [element]。
我知道我需要使用PrepareElements装饰器来解决这个问题,但是这导致了名称改变了form [subForm] [form] [subForm] [subForm] [elements](它将前两个名字加倍开始)。
任何想法我应该如何处理?
谢谢。
更新:我试图调试PrepareElements,我真的不明白在做什么。 看起来它在第一次迭代中工作正常,但是当它在中间子窗体中的一个上运行时,它再次添加形式[子形式]前缀。当我不使用PrepareElements装饰器时,我只是在名称(即,而不是form [subForm] [element],我只得到subForm [element])中缺少了“表单”前缀)。
可能是我可以修正这个莫名其妙?
我试图改变belongsTo但只替换了“subForm”前缀。
它实际上好像缺少的是subForm上的belongsTo方法。
再一次,这都是因为ViewScript装饰器。它适用于FormElements装饰器。
更新2:只是为了澄清,我不介意这个名称的变化,但它会导致我的字段不填充时,我调用form->填充。
编辑:我认为我已经收窄的问题:当我得到我的价值观回来setDefaults,他们被下令这样的:
array(
\"formElements1-name\" => value1... \"subFormName\" => array(
\"parentFormName\" => array(
\"subFormName\" => subForm-values-array
)
)
... 这里的主要问题是"parentFormName" => "subFormNAme"..
它重复了什么?我已经在主要形式。我猜这是因为我设置了setElementsBelongTo(formName[subFormName])
,但如果我不这样做,那么我会得到我的子表单值完全独立于表格,即
即 值数组=阵列( \ “表格名称\”=>数组( formValues ),\ “subFormNAme \”=>数组( subFormValues )
,虽然我怎样exepct它是
array(
formName => array(
subFormNAme => values-array
)
)...
它甚至有可能使这项工作?
[Zend:ViewScript装饰器和数组表示法]的完全重复(http://stackoverflow.com/questions/7155047/zend-viewscript-decorator-and-array-notation) – Phil
这不是重复的,因为我已经使用建议的解决方案,但效果不佳。 – Ran
Zend表格必须是我所遭受的不幸中最糟糕,最可笑,最疯狂的一段垃圾。我完全感觉到你的痛苦,如果你知道有什么问题,那么请尽量让我知道! – GordonM