1

设置:symfony 2.0,SonataAdminBundle 2.0

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

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

  1. 公司1
    • 事件1
    • 事件2
    • 事件3
  2. 公司2
    • 事件4
    • 事件5
    • 事件6

公司管理员

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'));
}

事件职位管理员

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('name')
        ->add('date')
    ;

    echo $this->getSubject().' ';
}

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

预期结果:事件1 事件2 事件3

4

1 回答 1

0

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

我猜你也在使用 DoctrineORMBundle,用“sonata_type_collection”调用 EventPositionsAdmin。如果您这样做,只需自定义其模板并操作 Company 的所有 EventPosition:

->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
            ))
于 2012-10-07T08:13:33.027 回答