1

我正在使用包含包装元素的表单。包装发生在此处描述的视图中。

我的动作是这样的:

 $myForm = [definition here]
 $myForm->setName('entity');
 $myForm->setWrapElements(true);

 $request = $this->getRequest();
 if ($request->isPost()) {

        $myEntity = new Entity();
        $myForm->bind($myEntity);
        $myForm->setData($request->getPost()->get('entity'));

问题:调用$myForm->isValid()时无效。之后调用$myForm->getData()它是空的。

我在动作中重复了setNameandsetWrapElements但不管有没有它,它都不起作用。

有什么想法我可能做错了吗?表单定义保持不变,适用于非包装表单。所以我猜错误不在那里。

PS:回显$myForm->isValid()返回一个空字符串。有没有办法获取错误消息?表单字段填充了我输入的数据,并且没有显示任何错误。

4

3 回答 3

1

使用以下内容:

$form->getMessages()

会给你验证信息。

您可以转储内容或循环循环消息foreach。例如:

foreach($form->getMessages() as $msgId => $msg) {
    echo "Validation error: $msgId => $msg"
}
于 2013-04-03T09:08:12.977 回答
0

您可以尝试在代码中添加行吗,正如我在 zend 的 Form.php 中看到的那样,在您调用 prepare() 之前,元素名称不会被“实体”包裹;

$myForm->setName('entity');
$myForm->setWrapElements(true);
$myForm->prepare(); // << add this

但我不相信它会有所帮助,因为你描述的行为看起来没什么不同。Cau 你向我们展示了更多 Aydin 和 Sina 想要的 Entity 和 var_dumps 的源代码。

于 2013-04-03T01:43:44.207 回答
0

在 ZF2 中,如果表单无效,则不绑定数据。原因是您在 isValid 的返回中看到了一个空字符串,因为返回类型是布尔值,请改用 var_dump。

于 2013-04-03T09:13:17.760 回答