6

我在使用以下结构在奏鸣曲管理员中实现一对多关系时遇到问题。

->add('adhesions', 'sonata_type_collection', array('by_reference' => false,'required' => false), array(
    'edit' => 'inline',
    'inline' => 'table',
    'sortable'  => 'position',))

使用此选项:'edit' => 'inline',我丢失了 AdhesionAdmin 中定义的默认验证,如'required' => true。

那么,是否有一个设置可以指定某处?我试图在 sonata_type_collection 的设置中添加 'cascade_validation' => true 但它没有改变。

另一个问题:我可以使用带有 sonata_type_collection 的弹出编辑表单吗?('编辑' => '标准')

非常感谢任何指示和帮助。谢谢

4

2 回答 2

15

您必须启用 cascade_validation。你可以这样做:

  class UserAdmin extends SonataUserAdmin  
  {    
     protected $formOptions = array(
        'cascade_validation' => true        
     );

     /* Rest of your admin class code */


  }
于 2013-04-12T14:57:14.797 回答
9

只需Valid在您的实体属性上使用约束:

/**
 * @var Object[]
 *
 * @ORM\OneToMany(targetEntity="AppBundle\Entity\Object", mappedBy="myEntity")
 * @Assert\Valid
 */
private $objects;

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

于 2015-10-29T13:19:30.413 回答