[英]EasyAdmin3 / Symfony / Twig - url generator with route name and params in Twig template
我正在尝试使用一些参数在我的模板中生成 EasyAdmin3 url,但由于某种原因,它们不存在于 controller 中。
Twig 模板:
<a href="{{ ea_url().setRoute('route_name').set('id', 1) }}">xxx</a>
<a href="{{ ea_url({'routeName': 'route_name', 'id':1}) }}">yyy</a>
Error with missing EA context:
<a href="{{ path('route_name', {'id': 1}) }}">zzz</a>
Controller:
/**
* @Route("/admin/something/{id}", name="rounte_name")
*/
public function xyz($id = null, Request $request, AdminContext $context)
{
dd($_GET['id'], $request->request->all(), $context->getRequest()->request->all());
...
}
$_GET['id'] 有效,但请求和上下文为空 []。
知道如何使用参数按名称生成路线吗?
谢谢
如果您只是在 twig 中生成常规命名路由,我认为您不需要ea_url()
助手 function。 您应该能够使用 Symfony 提供的path()
twig 扩展。
{{ path(route_name, route_parameters = [], relative = false) }}
如果您尝试创建指向 EasyAdmin controller 操作的链接,则可以使用ea_url()
帮助程序,但您还必须指定 controller 和操作。 尝试类似:
{% set url = ea_url()
.setController('App\\Controller\\Admin\\FoobarCrudController')
.setAction('customFooAction')
.setEntityId(entity.instance.id)
.set('myParam', 'baz') %}
<a href="{{ url }}">Custom Foobar Action</a>
然后在你的 controller 中,一切都应该像往常一样通过$context
变量提供......
public function customFooAction(AdminContext $context)
{
$entity = $context->getEntity()->getInstance();
$myParam = $context->getRequest()->get('myParam');
}
这对我有用,我希望它有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.