我正在尝试在zend框架2中构建多个表格。我通过使用HTML输入数组分隔字段来开发单个表单,例如属于表'pages'的一个字段看起来像是
$this->add(array(
'name' => 'pages[title]',
'attributes' => array(
'type' => 'text',
'id' => 'title'
),
'options' => array(
'label' => 'Title',
),
));
但它的过滤器是
$inputFilter->add($factory->createInput(array(
'name' => 'title',
'required' => true,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
'validators' => array(
array(
'name' => 'NotEmpty',
),
),
)));
更改名称背后的原因是我通过在控制器中相应地分配值来逐步验证字段,如下所示
$form->setData($this->request->getPost()->pages);
获取消息数组时出现问题。表单isValid()函数工作正常,但如果输入无效,则返回空数组的消息。我怎样才能得到这些消息?
深入挖掘后,我发现过滤器正在返回消息,但是当表单通过过滤器和元素的名称映射错误消息时,由于我使用的是不同的名称,因此无法映射...可以解决此问题< / p>
在您要求我为表单元素和过滤器分配相同的名称之前,它将不起作用,因为表单无法将数据分配给具有页面[title]的元素,因为在请求中它不会接收任何输入名称页面[标题]而不是它将收到页面数组
答案 0 :(得分:1)
我会采取另一种方法,保持名称简单,不添加数组名称表示法。
然后您可以使用验证组和字段集验证不同的步骤。
http://framework.zend.com/manual/2.0/en/modules/zend.form.quick-start.html#validation-groups
如果您可以提供有关您正在尝试实现的内容的更多详细信息,则会更容易回复。