我正在使用symfony2开发一个应用程序。我想知道如何从控制器中的模板接收参数,因为我想将参数的值存储在数据库中。参数将在模板内的JavaScript脚本中获得其值,并且在提交按钮时必须传递给控制器。这是脚本:
$("MatchedTag").click(function ()
{
$(this).toggleClass("highlight");
var IdOfTag = this.id;
});
我想在控制器中接收的变量是IdOfTag。我怎样才能做到这一点?谢谢。
答案 0 :(得分:4)
在我们的应用程序中,我们使用两种方法。
第一种方法是在树枝中创建“配置”文件,该文件将包含在标题中的某处。该文件包含脚本中需要的所有JS变量。这些变量的这些值从控制器传递。然后在“参数”文件的 twig 模板中,您只需将它们添加到适当的位置:
<script>
myObj.var = "{{ var_from_controller }}";
</script>
另一种方法是将所需的变量放入html标记的其他自定义属性中。当我们需要走某条路线时,我们通常会这样做。
<p id="myDataHolder" data-src="{{ path('MyUserBundle_ajax_route') }}">blah</p>
然后,在您的JS中,您只需解析该标记的属性。
答案 1 :(得分:1)
您可以使用AJAX传递变量(查看$.ajax,$.post,$.get - jQuery)或添加隐藏的输入字段以形成所需的值。
如果您想使用jQuery.ajax将IdOfTag
传递给/path/controller/tags
(例如),您的代码将如下所示:
$("MatchedTag").click(function ()
{
$(this).toggleClass("highlight");
var IdOfTag = this.id;
$.ajax({
url: "/path/controller/tags",
type: "POST",
data: { "tag_id" : idOfTag },
success: function(data) {
//(success) do something...
//variable "data" contains data returned by the controller.
}
});
});
然后在控制器中,您可以获得idOfTag
到$_POST["tag_id"]
好看并检查上面的链接。