如何在Symfony 2中获取当前路线?

时间:2016-02-11 09:17:34

标签: php symfony controller

我的所有页面都有导航菜单。当用户点击一个链接时,它会打开一个模式表单,用户可以在其中发送消息。当用户点击提交按钮时,我希望控制器返回当模态打开时他所在的页面。

3 个答案:

答案 0 :(得分:3)

获取controller中的当前路线。

$router = $this->get("router");
$route = $router->match($this->getRequest()->getPathInfo());
var_dump($route['_route']);

OR

$request = $this->container->get('request');
$routeName = $request->get('_route');

获取twig

中的当前路线
app.request.get('_route')

答案 1 :(得分:0)

好的,所以帖子有点旧,但对于其他寻找类似内容的人,我建议使用javascript来拦截提交并通过ajax帖子发送序列化数据的不同方式处理消息表单。

然后,控制器可以返回简单的成功消息或带有任何错误消息的表单视图。

如果提交成功,用户可以尝试重新发送消息或只是关闭模式,或者使用window.timeout自动关闭它。用户永远不会离开原始页面,他们不必等待页面重新加载。

像jQuery这样的库将使这很容易实现,例如

$(document).on("click","button#messageSend",function(e){
    tht = $(this);
    frm = tht.closest("form");
    container = frm.parent()
    e.preventDefault();
    $.ajax({
        url: frm.attr("action"),
        method: "POST",
        data: frm.serialize(),
        dataType: "html"
    }).done(function(data){
        container.html(data);
        // Add any additional processing here
    });
    return false;
});

答案 2 :(得分:-1)

在树枝模板中生成路径:

{{ path(app.request.attributes.get('_route'), 
    app.request.attributes.get('_route_params')) }}

或获取当前请求uri:

{{ app.request.uri }}

您也可以考虑在叠加层中进行模态窗口,这样用户只需关闭模态即可返回当前页面。