首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Twig模板中使用路由名称和参数的EasyAdmin3 / Symfony / Twig - url生成器

在Twig模板中使用路由名称和参数的EasyAdmin3 / Symfony / Twig - url生成器
EN

Stack Overflow用户
提问于 2021-04-30 21:18:32
回答 1查看 585关注 0票数 1

我试图在我的模板中生成带有一些参数的EasyAdmin3 url,但是由于某种原因,它们没有出现在控制器中。

小枝模板:

代码语言:javascript
复制
<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>

控制器:

代码语言:javascript
复制
/**
 * @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‘起作用,但请求和上下文为空[]。

你知道如何使用params按名称生成路由吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-05-23 01:03:21

如果您只是在twig中生成常规的命名路由,我认为您不需要ea_url()助手函数。您应该能够使用Symfony提供的path() twig extension

代码语言:javascript
复制
{{ path(route_name, route_parameters = [], relative = false) }}

如果您正在尝试创建指向EasyAdmin控制器操作的链接,则可以使用ea_url()帮助器,但您还必须指定控制器和操作。尝试如下所示:

代码语言:javascript
复制
{% 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>

然后在您的控制器中,一切都应该像往常一样通过$context变量可用……

代码语言:javascript
复制
public function customFooAction(AdminContext $context)
{
    $entity = $context->getEntity()->getInstance();
    $myParam = $context->getRequest()->get('myParam');
}

这对我很有效,我希望它能有所帮助。?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67334635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档