如何添加链接以在 SonataAdminBundle 中的关系字段上显示关系实体的操作

Posted

技术标签:

【中文标题】如何添加链接以在 SonataAdminBundle 中的关系字段上显示关系实体的操作【英文标题】:How to add link to show action of the relation entity on relation field in SonataAdminBundle 【发布时间】:2020-01-19 06:20:00 【问题描述】:

我正在 SonataAdminBundle 中制作管理面板。 在用户显示操作中,我有字段公司返回分配给用户的公司数组。 这是一个 OneToMany 关系。 UserCompany 有 user_id 和 company_id。 我想在每个返回的公司名称上创建链接,指向它的实体显示操作。 这是 UserAdmin 类中 configureShowFields() 函数的代码:

                ->with('Assigned organizers',['class' => 'col-md-6'])
                    ->add('companies', null, [
                        'label' => 'Organizers',
                    ])
                ->end()

我设法在指向显示实体操作的字符串字段上创建了一个链接,但 id 属性取自当前实体视图:

            ->with('Address', ['class' => 'col-md-6'])
                ->add('userProfile.locality', 'url', [
                    'route' => [
                        'name' => 'admin_app_employee_show',
                        'identifier_parameter_name' => 'id'
                    ],
                    'label' => 'Localiy',
                ])

更重要的是奏鸣曲管理员在相关字段上创建链接,当关系是直接时, 例如: 公司有很多员工。然后在公司中显示对员工字段的操作 我看到带有链接的数组已经指向编辑员工实体的操作。

也许有可能覆盖此字段的模板,但我似乎不清楚, 因为文档缺少更高级的示例。 这就是我尝试覆盖字段模板的方式:

                ->add('userProfile.street', null, array(
                    'label' => 'Street',
                    'template' => 'custom-field.html.twig',
                ))

模板位置:App/templates/Admin/

任何帮助表示赞赏

【问题讨论】:

SonataAdmin 生成指向这些字段的链接,当我将 UserCompany 实体添加到 sonata_admin.yaml 并将其配置为 UserCompanyAdmin 时,它是公司和用户之间的连接器。但链接指向 UserCompany 的编辑视图。如何在 show_one_to_many.html.twig 模板中分配 route_name 值?还是在 configureShowFields 中? 【参考方案1】:

一旦配置好所有相关实体并将其添加到服务中,SonataAdmin 就会自动创建指向相关实体的链接。 然后,您可以更改关系字段上链接的路由操作,如下所示:

            ->with('Assigned events', ['class' => 'col-md-6'])
                ->add('events', null, [
                    'route' => [
                        'name' => 'show'
                    ],
                    'label' => 'Events',
                ])
            ->end()

您还可以更改关系字段的类型,例如“many_to_one”,而不是 null,这在某些情况下可能会有所帮助。

【讨论】:

以上是关于如何添加链接以在 SonataAdminBundle 中的关系字段上显示关系实体的操作的主要内容,如果未能解决你的问题,请参考以下文章

添加一个简单的链接以在 Rails 中设置一个布尔字段 - 似乎没有发生任何事情

如何设置 code::blocks 以在目标链接器选项之前链接项目链接器选项?

在html中如何链接表单提交以在新选项卡中打开并链接相对URL?

如何链接项目以在 CentOS 6 上成功安装 sf 包?

添加一个按钮以在 jQuery 数据表中打开弹出窗口

如何链接下拉菜单选项以在 Tableau 中显示本地 HTML 文件?