【问题标题】:EasyAdmin3 / Symfony / Twig - url generator with route name and params in Twig templateEasyAdmin 3 / Symfony / Twig - 在 Twig 模板中带有路由名称和参数的 url 生成器
【发布时间】:2021-07-23 20:10:46
【问题描述】:

我正在尝试使用一些参数在我的模板中生成 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>

控制器:

/**
 * @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'] 有效,但请求和上下文为空 []。

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

谢谢

【问题讨论】:

    标签: php symfony twig easyadmin


    【解决方案1】:

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

    {{ path(route_name, route_parameters = [], relative = false) }}
    

    如果您尝试创建指向 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>
    

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-07-14
      • 2016-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-01
      • 2011-11-29
      • 1970-01-01
      • 2015-05-08
      相关资源
      最近更新 更多