我对Symfony很新(2周),所以请原谅我的无知。
我正在尝试添加一个自定义操作按钮,该按钮将链接到RELATED实体的预过滤列表。我做了很多研究,但似乎找不到我需要的东西。
目前,我有两个实体书籍和作者,其中包含manyToOne关系。 我以通常的方式在Sonata Admin中设置了这些,并且一切正常。我甚至在书籍列表页面上有一个作者过滤器,我希望可以利用它来实现我的目标。
在作者列表视图中,我想在查看和编辑旁边的每一行上添加一个操作按钮,称为“按作者查看书籍”。我可以获取按钮但无法正确构建URL。
我有3个路由问题:
1)我试图在我的按钮模板中使用admin.generateObjectUrl()或类似内容来干净地构建管理URL但无法获得备用实体的路径。就我而言,由于我目前正在查看作者,因此链接始终指向作者实体,而不是我想要的书籍。
2)我不确定如何获取当前作者的id以将其传递给过滤器
3)我不确定如何干净地构建过滤器查询字符串参数。如果需要,我可以手工完成:bookEntityListPath +“?filter [author] [value] [] =”+ $ authorID 但显然这不是那么干净,如果可能的话,我宁愿采用更好的方法。
提前致谢!!!
答案 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(在该实体的详细信息或编辑模板中将具有名称对象)