【问题标题】:get route controllers/action within rendered subcomponent in symfony3在 symfony3 的渲染子组件中获取路由控制器/动作
【发布时间】:2017-07-08 16:46:54
【问题描述】:

在我的 base.html.twig 中,我渲染了一个组件:

{% block header %}
    {{ render(controller("AppBundle:Application\\Header:header")) }}
{% endblock %}

有没有办法获取当前路由动作/控制器?即浏览器中的当前url?

当我做 var_dump($request->get('_route'));die;结果为空

【问题讨论】:

  • 不要这么想,当我尝试这样做时,我得到了这个:在呈现模板期间引发了异常(“无法为命名路由生成 URL”,因为这样的路由不会存在。”)。
  • 实际上应该是这样的:$_SERVER["REQUEST_URI"]。是否有帮助服务来获取这些数据?包装器?

标签: symfony


【解决方案1】:

由于无法通过评论来回答,所以我不得不写下这个作为答案。

如上所述,此问题可能与以下问题重复: Get current URL in Twig template

要获取当前路由的名称和当前 URL,您可以通过以下方式在 twig 模板中简单地呈现它们:

<p><strong>current route name</strong> :{{app.request.attributes.get('_route')}}</p>
<p><strong>current url: </strong> {{ app.request.schemeAndHttpHost ~ app.request.requestUri }}</p>

【讨论】:

  • 我确实尝试过,它打印了这个:当前路由名称:当前 url:http://localhost:8000/_fragment?_path=_format%3Dhtml%26_locale%3Den%26_controller%3DAppBundle%253AApplication% 255CHeader%253Aheader
【解决方案2】:

如果你想得到实际的路由,在你的控制器中你可以像这样得到主请求:

$this->container->get('request_stack')->getMasterRequest()->get('_route');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 2022-01-18
    • 1970-01-01
    • 2019-04-25
    • 2020-05-25
    • 1970-01-01
    相关资源
    最近更新 更多