SonataAdminBundle $ this-> getSubject()未按预期工作

时间:2012-10-05 14:02:47

标签: symfony symfony-sonata sonata-admin

设置:symfony 2.0,SonataAdminBundle 2.0

我有两个实体。公司和活动。公司有很多活动。 我还有一个管理公司,允许编辑公司名称和相关事件。

在数据库中,我有2家公司,每家公司有3个事件。

  1. 公司1
    • 事件1
    • EVENT2
    • EVENT3
  2. Company2的
    • EVENT4
    • event5
    • event6
  3. CompanyAdmin

    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
            ->add('name')
            ->add('events', 'sonata_type_collection', array(), array(
                'edit'      => 'inline',
                'inline'    => 'table'
            ))
        ;
    
        $this->getFormFieldDescription('events')
            ->setAssociationAdmin($this->getConfigurationPool()->getInstance('namespace.platform.admin.event_positions'));
    }
    

    EventPositionsAdmin

    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
            ->add('name')
            ->add('date')
        ;
    
        echo $this->getSubject().' ';
    }
    

    问题 echo $ this-> getSubject() Company1 打印 event1 event1 event1

    预期结果: event1 event2 event3

1 个答案:

答案 0 :(得分:0)

无法以这种方式在CompanyAdmin中获取当前的EventPosition。父管理员(CompanyAdmin)不会调用EventPositionsAdminController :: editAction,因此它不会更改当前ID,只会访问EventPositionsAdmin以了解表单的外观(EventPositionsAdmin :: configureFormFields())。

我猜你也在使用DoctrineORMBundle,用'sonata_type_collection'调用EventPositionsAdmin。如果您这样做,那只需要自定义其模板并操纵公司的所有EventPositions:

->add('contatos','sonata_type_collection', array('template' => 'MyBundle:custom_collection_template.html.twig'), array(
                'edit' => 'inline',
                'inline' => 'table',
                'allow_add' => true,
                'prototype' => true,
                'allow_delete' => true
            ))