【问题标题】:How to apply validation rules on Collection form type?如何对 Collection 表单类型应用验证规则?
【发布时间】:2014-10-21 17:54:47
【问题描述】:

例如我们有两个实体,一个 Car 和一个 Person,当我们像下面这样修改 PersonType 时:

$builder
    ->add('email')
    ->add('cars','collection',array(
        'type' => new CarType(),
        'allow_add' => true,
        'allow_delete' => true,
        'by_reference' => false,
    ))
    ->add('submit','submit')

并且对 Car 实体具有以下验证规则:

Mtm\AppBundle\Entity\Car:
properties:
  file:
    - File:
      maxSize: 100k
      mimeTypes: [application/pdf, application/x-pdf]
      mimeTypesMessage: Please upload a valid PDF

验证规则不适用于表单,它只是对其进行 html5 验证,而不是服务器端验证。

知道我该怎么做吗?

【问题讨论】:

    标签: php validation symfony webforms


    【解决方案1】:

    cascade_validation 属性设置为true:

    $builder
        ->add('email')
        ->add('cars','collection',array(
            'type' => new CarType(),
            'allow_add' => true,
            'allow_delete' => true,
            'by_reference' => false,
            'cascade_validation' => true
        ))
        ->add('submit','submit')
    

    http://symfony.com/doc/current/reference/forms/types/collection.html#cascade-validation

    【讨论】:

    • 请问有什么其他想法吗? :)
    【解决方案2】:

    工作解决方案如下:

    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Mtm\AppBundle\Entity\Person',
            'cascade_validation' => true,
        ));
    }
    

    我必须在 defaultOptions 中添加它。

    感谢dmnptr 提供找到正确答案的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      • 2015-04-10
      相关资源
      最近更新 更多