2010-05-15 78 views
1

即时测试symfony表单验证。symfony验证问题

问题很简单。

无论我放在身体文本区域并发布它,我总是收到“必需”。

我不知道为什么。

我只有一个验证规则。

这里是代码: code

什么是错的/我怎样才能调试?

谢谢

更新:它与控制器中的绑定有关。

因为即使我删除验证表单仍然无效,它将被传递到模板,但这次没有“必需”。

所以无论是否得到验证,它都不会有效。

它与embedForm()可能有什么关系?已验证嵌入表单的人员?

我已经印刷的错误信息进行与

<? 
foreach ($form->getErrorSchema() as $field => $error) { 
    printf("%s: %s\n", $field, $error->getMessage()); 
    echo "<br />"; 
} 
?> 

,我也得到:

0: Unexpected extra form field named "body". 
thread: body [Required.] 
_csrf_token: Required. 
Body 

做他们的意思是线程:身体是必需的或需要CSRF?

谢谢

+0

我懒得检查一下自己,所以...'textarea'的'name'属性是什么?它是'thread [body]'还是'body'? – Crozin 2010-05-15 12:46:15

+0

其线程[body]! – 2010-05-15 12:51:50

+0

- 删除评论 - 只是看到你的更新 – Tom 2010-05-15 15:06:15

回答

1

首先,尝试呼应的形式而不具体,如:

<?php echo $form; ?> 

如果一切正常,那么它的与您的表单回显代码有关。我建议检查该页面的HTML源代码,然后查看默认表单代码呈现的内容,并将其与上面的代码输出进行比较。如果这些字段的名称不同,那么这就是您的答案 - 它可能是Radu建议的表单名称格式。

在一个单独的说明,别忘了使用方法:

<?php echo $form->renderHiddenFields(); ?> 

,以及在你的模板,从而使CSRF令牌字段被渲染。这将删除您的“_csrf_token:必需”表单错误。

1

您是否检查过通过POST发送的参数?

也许将在您的形式设置方法如下将帮助:

$this->widgetSchema->setNameFormat('thread[%s]');