【发布时间】:2013-02-22 00:19:52
【问题描述】:
我正在编写自己的 CAPTCHA 类,当表单无法验证时,出于显而易见的原因,我不想使用之前的答案预先填充验证码输入。我只想在渲染之前清除输入。
我发现 data 选项仅适用于默认值,它会被用户输入的内容覆盖。我尝试了以下代码:
$form->get('captcha')->setData(null);
.. 请求与表单绑定后,却抛出了AlreadyBoundException。我实际上已经设法让它工作:
if (isset($formView->children['captcha'])) {
$formView->children['captcha']->vars['value'] = null;
}
但这看起来是错误的,而且绝对不符合 Symfony 的标准。我查看了您在构建表单时可以提供的其他选项,但没有看到任何值得注意的内容。
有人知道吗?
顺便说一句,我有一半希望 Symfony2 附带一个 CAPTCHA 解决方案,这主要是我习惯该框架时的学习练习。
【问题讨论】:
-
如何构建表单?直接在您的控制器中?你是使用全栈还是只使用表单组件?
-
我有完整的 Symfony 应用程序。表单有它自己的类,它扩展了 AbstractType,它处理添加每个字段。
-
你能发布你的类型代码吗?
-
我也有类似的情况:$form = $this->createFormBuilder()->add('order_id', 'text', array('label' => 'Scan Barcode'))- >getForm();除了作者的方法之外,我无法找到一种不同的方法来从模板中的渲染中删除提交的值。
标签: forms symfony symfony-forms