symfony2如何通过javascript访问twig路径

时间:2014-07-21 13:25:04

标签: javascript php symfony

在symfony2中,这在html.twig文件中工作正常:

<a class="btn brl-next brl-btn" href="{{ path('new_message') }}">Next</a>

但目前,我需要通过javascript访问path('new_message')

我试过了:

        nextButtons.each(function () {
            $(this).on('click', function () {
                $("a").prop("href", "{{ path('new_message') }}");
            });
        });

但它不起作用,有人可以帮助我如何通过javascript访问symfony路径?

4 个答案:

答案 0 :(得分:1)

只需添加带有路径属性的HTML元素即可。我用它来获取我的ajax路线。见下面的例子:

dyncontent.html.twig

<div id="dyncontent" class="dyn" data-ajaxurl="{{ path("common_ajax") }}"></div>

我需要用于将数据加载到其中的div,并且作为路径信息,我具有定义了我的路径的data-ajax属性。

现在我可以使用我的Javascript

选择此路径

dyncontent.js

var ajaxpath =  $("#dyncontent").attr("data-ajaxurl");
$.getJSON(ajaxpath , null, function(data) {
  //get JSON out of the right controller with correct path
}

我不确定您使用按钮尝试了什么,但您也可以

button.html.twig

<a class="btn brl-next brl-btn" href="#" data-path="{{ path('new_message') }}">Next</a>

并通过

获取信息

button.js

var new_message_path = $(".brl-btn").attr("data-path");

现在您在new_message_path变量中拥有自己的路径。但想想让你的选择器独一无二。

答案 1 :(得分:0)

你可以这样做:

在你的layout.html.twig 中定义全局js vars:

<script type="text/javascript">
    var routes = {
        myroutes:{
            route1:"{{ path('my_symfony_route', {}, true) }}", // the true permits to use relative path
            route1:"{{ path('my_symfony_route2', {}, true) }}" 
        },
    };
</script>

然后在 yourjsfile.js 中根据您的需要调用全局

nextButtons.each(function () {
    $(this).on('click', function () {
        $("a").prop("href", routes.myroutes.route1);
    });
});

我希望这会对你有所帮助!

答案 2 :(得分:0)

对于我的情况,我使用了所有路径

例如,如果您的路线名称为:“new_message”,路径为/yourproject/web/app_dev.php/message/new,则可以在javascript中进行相似的操作:

var route='/docMessagerie/web/app_dev.php/protocol/updateProtocol/';

这对我有用

答案 3 :(得分:0)

您可以像这样直接添加twig路径语法。

var commercial = '{{path('_commercial')}}';

然后你可以像这样打电话

 window.location = commercial ;