【问题标题】:How to add dynamic error for form validation symfony using createnamebuilder?如何使用 createnamebuilder 为表单验证 symfony 添加动态错误?
【发布时间】:2018-12-14 05:43:28
【问题描述】:

我使用createNamebuilder() 创建了我自己的表单生成器。就这样

$builder = $this->formFactory->createNamedBuilder($formName, $phoneNumberType, $data, $formOptions);

我有电话号码类型。在其中我添加到构建器 countryNumber 和 number。

$builder->add('countryNumber', CountryCodeType::class);
$builder->add('number', NumberType::class);

如何在需要的数量上添加约束?我尝试使用这个

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $contactNumber = $builder->getData();
    $countryCode = null;
    if ($contactNumber instanceof ContactNumber) {
        $countryCode = $contactNumber->getCountryNumber();
    }

    $builder->add('countryNumber', CountryCodeType::class, ['data' => $countryCode]);
    $builder->add('number', NumberType::class, [
        'required' => true,
        'constraints' => [new NotBlank(['message' => 'Phone number is required.'])]
    ]);
}

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults([
        'data_class' => ContactNumber::class,
        'error_bubbling' => true
    ]);
}

当我提交表单时。它不显示错误消息。

【问题讨论】:

  • 你能添加控制器代码吗,这部分我觉得没问题

标签: php symfony symfony-forms


【解决方案1】:

您正在尝试在发布后添加表单, 您需要使用事件 https://symfony.com/doc/current/form/dynamic_form_modification.html

或者你可以在提交空数据表单后给实体添加约束会返回错误。

use Symfony\Component\Validator\Constraints as Assert;

class ContactNumber
{
    /**
    * @Assert\NotBlank()
    * ..
    */
    private $number
}

和 framework.yaml

framework:
    validation:      { enable_annotations: true }

【讨论】:

    猜你喜欢
    • 2020-03-24
    • 1970-01-01
    • 2015-01-16
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 2019-11-26
    • 2020-02-09
    相关资源
    最近更新 更多