Sonata管理员操作按钮到预过滤列表

时间:2014-01-03 06:23:58

标签: symfony button action add sonata-admin

我对Symfony很新(2周),所以请原谅我的无知。

我正在尝试添加一个自定义操作按钮,该按钮将链接到RELATED实体的预过滤列表。我做了很多研究,但似乎找不到我需要的东西。

目前,我有两个实体书籍和作者,其中包含manyToOne关系。 我以通常的方式在Sonata Admin中设置了这些,并且一切正常。我甚至在书籍列表页面上有一个作者过滤器,我希望可以利用它来实现我的目标。

在作者列表视图中,我想在查看和编辑旁边的每一行上添加一个操作按钮,称为“按作者查看书籍”。我可以获取按钮但无法正确构建URL。

我有3个路由问题:

1)我试图在我的按钮模板中使用admin.generateObjectUrl()或类似内容来干净地构建管理URL但无法获得备用实体的路径。就我而言,由于我目前正在查看作者,因此链接始终指向作者实体,而不是我想要的书籍。

2)我不确定如何获取当前作者的id以将其传递给过滤器

3)我不确定如何干净地构建过滤器查询字符串参数。如果需要,我可以手工完成:bookEntityListPath +“?filter [author] [value] [] =”+ $ authorID 但显然这不是那么干净,如果可能的话,我宁愿采用更好的方法。

提前致谢!!!

1 个答案:

答案 0 :(得分:11)

我遇到了同样的问题,当我找不到答案时就开始尝试一些代码。使用path()twig方法(路径到路径转换),可以很容易地创建类似的链接。

请参阅此文档:http://symfony.com/doc/current/book/routing.html#generating-urls-from-a-template

您的链接看起来像这样:

<a href="{{ path('admin_application_book_list', {
  'filter[author][value]': object.id  
}) }}" class="btn btn-small">

“admin_application_book_list”是书籍列表的路径(bookEntityListPath?),而object.id是作者的id(在该实体的详细信息或编辑模板中将具有名称对象)