如何从 ZF2 中子实体的字段集中调用单个表单元素
Posted
技术标签:
【中文标题】如何从 ZF2 中子实体的字段集中调用单个表单元素【英文标题】:How to call individual form elements from the fieldset of a child entity in ZF2 【发布时间】:2014-04-05 22:24:39 【问题描述】:在视图脚本中,从字段集中调用表单元素的语法类似于:
echo $this->formRow($form->get('member')->get('firstName'));
此脚本从字段集 member
中调用单个元素 firstName
。但是,如果字段集元素引用关联字段集实体的别名,则此脚本将调用子表中的所有元素。从子表中调用单个元素的语法是什么?
换句话说,假设我们有一个members
实体和一个members
字段集,其中包含firstName
和lastName
等元素。我们还有一个address
实体和一个address
字段集,其中包括address
、city
、state
和zipcode
等元素。对于 ORM 关联,members
实体包括一个addressInfo
元素,该元素建立到address
实体的链接,address
实体包括一个memberItem
元素,它建立到members
实体的链接.在这种情况下,
echo $this->formRow($form->get('member')->get('firstName'));
在视图脚本中生成单个 firstName
表单元素,而
echo $this->formRow($form->get('member')->get(‘addressInfo’));
为address
、city
、state
和zipcode
生成表单元素。
我假设如果我们只想为city
生成一个表单元素,那么脚本可能需要类似于
echo $this->formRow($form->get('member')->get(‘addressInfo’)->get(‘city’));
或
echo $this->formRow($form->get('member')->get(‘addressInfo’, ‘city’));
但这些都不起作用。
语法是什么?
【问题讨论】:
【参考方案1】:分解一下,你想要以下...
$member = $form->get('member');
$addressInfo = $member->get('addressInfo');
$city = $addressInfo->get('city');
echo $this->formRow($city);
将调用链接在一起,你最终得到了这个
echo $this->formRow($form->get('member')->get('addressInfo')->get('city'));
【讨论】:
我认为这可行,但它给出了 Zend\Form\Exception\InvalidElementException 错误:No element by the name of [city] found in form
【参考方案2】:
由于addressInfo
元素是一个集合,所以在识别“字段”之前,需要先识别集合的“行”。因此,
$member = $form->get('member');
$addressFieldsets = $member->get('addressInfo');
$addressInfo = $addressFieldsets[0];
$city = $addressInfo->get('city');
echo $this->formRow($city);
【讨论】:
以上是关于如何从 ZF2 中子实体的字段集中调用单个表单元素的主要内容,如果未能解决你的问题,请参考以下文章