gpt4 book ai didi

symfony - 如何验证 Symfony 2 中至少一个元素(或 N 个元素)的选择?

转载 作者:行者123 更新时间:2023-12-02 11:58:55 24 4
gpt4 key购买 nike

我的表单作为字段users(实体类型)。我如何添加验证以明确至少应选择一个用户?实际上我正在添加一个事件监听器,但我不知道这是否是合法的解决方案:

public function buildForm(\Symfony\Component\Form\FormBuilder $builder,
array $options)
{
$builder
->add('title', 'text', array(
'label' => 'Titolo'
))
->add('content', 'textarea', array(
'label' => 'Contenuto'
))
->add('sender_text', 'text', array(
'label' => 'Mittente testuale',
))
->add('users', 'entity', array(
'label' => 'Destinatari',
'class' => 'DL\FidelityBundle\Entity\User',
'property' => 'select_label',
'multiple' => true
));
;

// Valida il numero di utenti selezionati
$builder->addEventListener(\Symfony\Component\Form\FormEvents::POST_BIND,
function($event) {
$form = $event->getForm();
$data = $event->getData();

if(!$data->users->isEmpty()) return;

$msg = 'Occorre specificare almeno un utente destinatario';
$form->get('users')->addError(new FormError($msg));
});
}

最佳答案

从 Symfony 2.1 开始,您可以使用 Count 约束。如果您使用的是 2.0,则只需将约束复制到您的项目并调整其命名空间和 API(在 2.0 和 2.1 之间略有更改)。

/**
* @Assert\Count(min = 1, minMessage = "Occorre specificare almeno un utente destinatario")
*/
private $users = new ArrayCollection();

关于symfony - 如何验证 Symfony 2 中至少一个元素(或 N 个元素)的选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11310641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com