奏鸣曲 sonata_type_collection 展示表

Posted

技术标签:

【中文标题】奏鸣曲 sonata_type_collection 展示表【英文标题】:sonata sonata_type_collection display table 【发布时间】:2015-04-20 09:58:43 【问题描述】:

我有两个实体:“Event”和“EventImage”。一个事件可以有多个图像。

这是在 Event 表上定义的关系:

**
* Event
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="AppBundle\Entity\EventRepository")
*/

class Event


    /**
     * @ORM\OneToMany(targetEntity="EventImage", mappedBy="event")
     */
    protected $eventImages;


这是在 EventImage 表上定义的关系:

/**
 * EventImage
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="AppBundle\Entity\EventImageRepository")
 */
class EventImage

    /**
     * @ORM\ManyToOne(targetEntity="Event", inversedBy="eventImages")
     * @ORM\JoinColumn(name="event_id", referencedColumnName="id")
     */
    protected $event;

在我的 EventAdmin 中的“configureFormFields”中

$formMapper
    ->add('eventImages', 'sonata_type_collection',array(), array(
                        'edit' => 'inline',
                        'inline' => 'standard',
                        'sortable'  => 'listOrder'
                ))

在我的 EventImageAdmin 中的“”

$formMapper
    ->add('id')
    ->add('imagePath', 'text')
->end()
;

现在我看到了一些示例,您可以在其中获得一个漂亮的格式化表格,每条拉取的记录都在一行中,带有用于删除行的复选框和拖动选项,以及“添加新行”按钮以链接一个新元素(或添加一个新元素)

但我得到的只是关联的 eventImage 记录的级联列表,没有在表格中格式化,没有“添加新行”选项。

我做错了什么?

【问题讨论】:

【参考方案1】:

在您的EventImageAdmin 中,不需要id 字段也可以使用sonata_type_model_list 来表示imagePath

  $formMapper
        ->add('imagePath', 'sonata_type_model_list', array('required' => false));

在您的EventAdmin 中,在$formMapperadd() 函数的第四个参数中定义EventImageAdminadmin_code 服务ID

$formMapper
    ->add( 'eventImages', 'sonata_type_collection', array(
            'cascade_validation' => false,
            'type_options'       => array( 'delete' => false ),
        ), array(

            'edit'            => 'inline',
            'inline'          => 'table',
            'sortable'        => 'position',
            'link_parameters' => array( 'context' => 'define context from which you want to select media or else just add default' ),
            'admin_code'      => 'sonata.admin.your_service_id_here'
            /*here provide service name for junction admin */
        )
    );

有关更多信息,请参阅我关于 Handling multiple file uploads in Sonata Admin Bundle 的另一个答案

【讨论】:

【参考方案2】:

您错过了一些选项。试试这个:

  ->add('eventImages', 'sonata_type_collection', array(
                'by_reference' => true,
                'label' => false,
                'type_options' => array('delete' => true),
                'cascade_validation' => true,
                'btn_add' => 'Add new EventImages',
                "required" => false ), array(
                'edit' => 'inline',
                'inline' => 'table'
            ))

【讨论】:

感谢您的回答,但不幸的是,这不起作用。我仍然得到相同的记录级联,没有添加选项....

以上是关于奏鸣曲 sonata_type_collection 展示表的主要内容,如果未能解决你的问题,请参考以下文章

管理员的奏鸣曲媒体验证

更新奏鸣曲核心后的错误奏鸣曲.core.form.type.*

奏鸣曲一对多关系

奏鸣曲和单页

配置文件编辑时奏鸣曲用户捆绑错误

奏鸣曲页面网址