我试图在zend框架2中构建多表形式。我已经开发了一个单一的形式,通过分离字段使用HTML输入数组,例如一个字段属于表'页'看起来像什么
$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);
在获取消息数组时发生问题。Form isValid()函数工作正常,但在无效输入的情况下返回空消息数组。我怎样才能收到留言?
在深入挖掘后,我发现过滤器正在返回消息,但是当表单通过过滤器和元素的名称映射错误消息时,由于我使用不同的名称,它无法映射…
在你要求我为表单元素和过滤器分配相同的名称之前它不会工作因为表单不能为带有pages[title]的元素分配数据因为在请求中它不会接收任何带有名称pages[title]的输入它会接收一组页面
我会采取另一种方法,保持你的名字简单,不添加数组名称符号。
则可以通过使用验证组和字段集来验证不同的步骤。
http://framework.zend.com/manual/2.0/en/modules/zend.form.quick-start.html验证组