首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Symfony相关验证或验证组

Symfony相关验证或验证组
EN

Stack Overflow用户
提问于 2019-12-11 17:58:46
回答 1查看 28关注 0票数 0

我有以下表单元素

代码语言:javascript
复制
$builder->add('link_to', ChoiceType::class, [
    'label' => 'Link To *',
    'choices'  => [
        'Session' => 'session',
        'Category' => 'category',
        'External URL' => 'url'
    ]
]);

$builder->add('category', EntityType::class, [
    'label' => 'Category *',
    'class' => \App\Entity\Category::class,
    'choice_label' => 'translations[en].name'
]);

$builder->add('session', EntityType::class, [
    'label' => 'Session *',
    'class' => \App\Entity\Session::class,
    'choice_label' => 'translations[en].title'
]);

$builder->add('url', TextType::class, [
    'label' => 'External URL *'
]);

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults([
        'attr' => ['novalidate' => 'novalidate'],
        'data_class' => \App\Entity\Banner::class
    ]);
}

我想将NotBlank()验证器添加到基于来自link_to字段的值的category, session or url字段,例如,如果用户在link_to字段中选择了Session,则Session字段必须是必填字段,依此类推。

我试着使用验证组,但我感到困惑,有人能帮我解决如何使用验证组或其他方法吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-11 18:01:53

我会为整个Banner类设置一个自定义的validator constraint。这是因为您可以基于整个对象执行复杂的验证规则:

代码语言:javascript
复制
public function configureOptions(OptionsResolver $resolver) {
     $resolver->setDefaults([
         …
         'constraints' => YourValidatorConstraint::class
     ]); 
}

如果不需要额外的类,可以使用Callback约束:

代码语言:javascript
复制
$resolver->setDefaults([
    …
    'constraints' => new Callback(['callback' => [$this, 'validate']]),
]);

public function validate($object, ExecutionContextInterface $context, $payload)
{
    // go bananas
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59283126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档