Symfony:cascade_validation选项已弃用

问题描述:

我试图将我的项目从symfony2升级到symfony3。我想摆脱这种弃用警告Symfony:cascade_validation选项已弃用

The "cascade_validation" option is deprecated since version 2.8 and will be removed in 3.0. Use "constraints" with a Valid constraint instead." 

下面的是我的代码

->add('student_name', 'collection', array(
       'entry_type' => TextType::class, 
       'allow_add' => true, 
       'cascade_validation' => true, 
       'options' => array(
        'required' => false 
       ) 
      )) 

可我只是删除此行'cascade_validation' => true而不会造成任何麻烦?或者symfony3中的等效代码是什么?

+1

从[迁移指南(https://github.com/symfony/symfony/blob/master/UPGRADE-3.0.md#form ):'cascade_validation选项已被删除。改为使用约束选项和有效约束 – Matteo

错误消息告诉您在实体上进行验证,但是从您的代码中我不确定您的实体是什么。 此链接解释Valid annotation for an Entity

但是,您应该能够从表单中删除“cascade_validation = true”。我担心你仍然可能会遇到其他错误。

试试看看会发生什么。 您可能也想要查看此Validation tutorial以供参考。

在Symfony3中,您必须在父实体中使用@Assert\Valid约束。您可以删除FormType类中的行'cascade_validation' => true

class Author 
{ 
    /** 
    * @Assert\Valid 
    */ 
    protected $address; 
} 

http://symfony.com/doc/current/reference/constraints/Valid.html

只需更换

 
'cascade_validation' => true, 

with 

'constraints' => new \Symfony\Component\Validator\Constraints\Valid(),