我正在使用具有不同组标签的实体@Assert批注。
/**
* @var string
* @Assert\NotBlank(groups={"basic"})
* @ORM\Column(name="name", type="string", length=255, nullable=true)
*/
private $name = null;
/**
* @var string
* @Assert\NotBlank(groups={"advanced"})
* @ORM\Column(name="full_name", type="string", length=255, nullable=true)
*/
private $fullName = null;
因此它定义了basic和advanced组。创建表单时,我使用basic验证组,希望advanced约束不会受到影响。
$formBasics = $this->createForm(ArtistBasicType::class, $dummyArtist, [
'validation_groups' => ['basic'],
...
public function configureOptions(OptionsResolver $resolver) {
$resolver->setDefaults([
'data_class' => Artist::class,
// 'validation_groups' => ['basic'],
]);
}
我没有设置ArtistBasicType
的默认validation_group
(注释过,但之前也很累),并且buildForm字段正在使用typeguesser:
->add('fullName', null, ['label' => 'Full name'])
->add('name', null, ['label' => 'Name'])
所以我也没有在那里强制任何required (*)
标志。Twig也包含以下标准代码:
{{ form_row(formBasics.name,{'attr': {'class': 'form-control'}}) }}
{{ form_row(formBasics.fullName,{'attr': {'class': 'form-control'}}) }}
但是,两个字段都是必填。
在这种情况下,如何获得全名字段是可选的,但是如果我使用高级组进行验证,则准备成为必填项?
required
选项默认为true
,因此您应添加"required": false
。
请记住,这只是一个html5验证标志,不会对您的模型实施任何后端验证。
required
属性是true
by default,这就是为什么我说您不认识Symfony,您没有阅读手册的原因。因此,如果true
实际上是required
,则它[[will结果(取决于您的表单主题)将显示一个星号。