【发布时间】:2011-12-22 20:40:36
【问题描述】:
我认为在 symfony2 Form 和 Validator 组件上创建客户端表单验证非常有用。
最好的方法是将验证约束传递给表单视图。 有了这些信息,就可以制作一个将表单字段呈现为如下内容的模板:
<div>
<label for="form_email">E-Mail</label>
<input
id="form_email" type="text" name="form[email]" value=""
data-validation-constraints='{"NotBlank":{},"MinLength":{"limit":6}}'
/>
</div>
然后,JavaScript 部分将查找所有具有 data-validation-constraints 属性的 <input> 元素并为它们创建正确的验证。
要将验证约束传递给表单视图,我认为最好的方法是创建表单类型扩展。这就是我的问题的重点:这是正确的方法吗?这怎么可能?
目前我的表单类型扩展如下所示:
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\Form\FormBuilder;
class FieldTypeExtension extends \Symfony\Component\Form\AbstractTypeExtension{
public function getExtendedType(){
return 'field';
}
public function buildView(FormView $view, FormInterface $form)
{
// at this point i didn't find a way to get the
// validation constraints out of the $form
// the `getAllValidationConstraints` here is just an example
$view->set('validation_constraints', $form->getAllValidationConstraints());
}
}
如何从 FormInterface 对象中获取应用于一个表单字段的所有验证约束?
【问题讨论】:
-
@alessandro1997 这个捆绑包试图解决我描述的同样的问题,但是以一种非常不同的方式。它目前仅适用于实体注释中定义的约束。我想得到所有的约束,不管它们来自哪里。我想使用与
isValid方法相同的机制来查找约束。
标签: php symfony validation symfony-forms