帮助我理解 Symfony 中表单验证的原理。
我创建一个表单域:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class, array(
'label' => 'Наименование'
));
}
在这种情况下,根据文档,name
默认字段将为required
.
现在,如果您转到浏览器中的源代码并删除required="required"
,并将该字段留空,那么表单当然会成功发送,最有趣的是,$form->isValid()
会发生什么true
。尽管事实上这个领域本质上是不可能的null
。
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
如果您仍然必须手动检查所有字段,那么表单验证的本质是什么?还是我做错了什么?
问题是您在 Entity 中没有任何限制。验证是通过向类添加一组规则(所谓的约束)来完成的。这是一个例子:
此处的文档,表单验证部分。