class Message
{
// ...
// check if user selected at least one network to publish the message
public function isNetworkSelected(ExecutionContext $context)
{
if (!$this->network_twitter && !$this->network_facebook && !$this->network_googleplus)
{
$context->addViolationAtSubPath('network_facebook', 'Please select at least one network', array(), null);
}
}
// ...
}
namespace App\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints as Assert;
class MyType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('myFirstCheckbox', CheckboxType::class, [
'required'=> false,
])
->add('mySecondCheckbox', CheckboxType::class, [
'required'=> false,
])
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'constraints' => new Assert\Expression(
expression: 'this.get("myFirstCheckbox").getData() or this.get("mySecondCheckbox").getData()',
message: 'Please choose 1 of the 2 checkboxes.',
)
]);
}
}
4条答案
按热度按时间w80xi6nr1#
如果您正确地使用选项列表的选择字段类型,则可以使用
ChoiceValidator
:从文档中:
如果multiple选项为true,则可以使用min选项强制选择至少XX个值。例如,如果min为3,但输入数组仅包含2个有效项,则验证将失败。
8ulbf1ek2#
问题解决了
基于Symfony2类约束验证器文档和有关更改设置验证子路径到UPGRADE-2.1.md的附加信息
在我的实体类中,我添加了:
在
validation.yml
中:ddrv8njm3#
你有一个按钮控件吗?如果有,在点击事件上,检查是否有一个选择,如果有,返回true,否则返回false。
zyfwsgd64#
我们可以使用
Expression
约束: