如何访问symfony2中另一个html.twig文件中的javascript函数?

时间:2014-09-05 10:04:04

标签: javascript html function symfony execution

我想知道如何访问symfony2中另一个html.twig文件中的javascript函数。假设我们有两个html.twig文件:file1.html.twig和file2.html.twig。我们还假设他们的代码如下:

file1.html.twig的代码:

 <html>
<head>
<script>
function validate(){
 //the code that I need to put here to run the javascript function executer() which exists in file2.html.twig
}
</script>
</head>
<body>
<form id="EventForm" action='{{path('ikproj_groupe_homepaeventsAdd',{id:idg})}}' method="POST" {{ form_enctype(form) }} onsubmit="validate();">
    //here is the form content.
</form>
</body>
</html>

file2.html.twig的代码:

 <html>
<head>
<script>
function executer(){
 //the function content
}
</script>
</head>
<body>

</body>
</html>

实际上,我想要做的是提交file1.html.twig中的一个表单,将在文件file2.html.twig中执行函数executer()。是否有可能在Symfony2中做到这一点??如果是的话,我应该把什么放在文件file1.html.twig的函数validate()中?

2 个答案:

答案 0 :(得分:2)

您可以将javaScript放入其自己的twig文件中,并根据需要将其包含在其他twig文件中。
示例(仅为完整性传递参数);

executer.html.twig

<script>
function validate(){
    // javascript function executer()
    var foo = {{ foo }};
}
</script>

file1.html.twig

<html>
    <head>
        {% include "executer.html.twig" with {'foo': 10} %}
    </head>
<body>
    <form id="EventForm" action='{{path('ikproj_groupe_homepaeventsAdd',{id:idg})}}' method="POST" {{ form_enctype(form) }} onsubmit="validate();">
    //here is the form content.
</form>
</body>
</html>

File2.html.twig

<html>
    <head>
        {% include "executer.html.twig" with {'foo': 20} %}
    </head>
<body>

</body>
</html>

答案 1 :(得分:0)

您还可以将该函数放入一个在两个文件夹中加载的JS文件中。

 //mycustomjsfile.js

 function executer(somevariable){
  //more codes..
 }

 function validate(somevariable){
  executer(somevariable);
  //more codes..
 }



 //twig file1
 <head>
 <script src="path/to/js/file"></script>
 <script>
  function validate({{somevariable}}){
    file2.html.twig
  }
 </script>
 </head>

 //twig file2
 <head>
 <script src="path/to/js/file"></script>
 <script>
  function execute({{somevariable}}){
    file2.html.twig
  }
 </script>
 </head>

请注意,如果需要其他数据,您可以传递变量进行验证并添加参数以执行。