在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路径?
答案 0 :(得分:1)
只需添加带有路径属性的HTML元素即可。我用它来获取我的ajax路线。见下面的例子:
<div id="dyncontent" class="dyn" data-ajaxurl="{{ path("common_ajax") }}"></div>
我需要用于将数据加载到其中的div,并且作为路径信息,我具有定义了我的路径的data-ajax
属性。
现在我可以使用我的Javascript
选择此路径var ajaxpath = $("#dyncontent").attr("data-ajaxurl");
$.getJSON(ajaxpath , null, function(data) {
//get JSON out of the right controller with correct path
}
我不确定您使用按钮尝试了什么,但您也可以
<a class="btn brl-next brl-btn" href="#" data-path="{{ path('new_message') }}">Next</a>
并通过
获取信息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 ;