EasyAdmin3 / Symfony / Twig - Twig 模板中带有路由名称和参数的 url 生成器

1 php symfony twig easyadmin

我正在尝试使用一些参数在模板内生成 EasyAdmin3 url,但由于某种原因它们不存在于控制器中。

树枝模板:

<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>
Run Code Online (Sandbox Code Playgroud)

控制器:

/**
 * @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());
    ...
}
Run Code Online (Sandbox Code Playgroud)

$_GET['id'] 有效,但请求和上下文为空 []。

知道如何使用参数按名称生成路线吗?

谢谢

Pet*_*vic 5

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

{{ path(route_name, route_parameters = [], relative = false) }}
Run Code Online (Sandbox Code Playgroud)

如果您尝试创建指向 EasyAdmin 控制器操作的链接,则可以使用ea_url()帮助程序,但您还必须指定控制器和操作。尝试类似的方法:

{% 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>
Run Code Online (Sandbox Code Playgroud)

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

public function customFooAction(AdminContext $context)
{
    $entity = $context->getEntity()->getInstance();
    $myParam = $context->getRequest()->get('myParam');
}
Run Code Online (Sandbox Code Playgroud)

这对我有用,我希望它有帮助。