How to access to a javascript function inside another html.twig file in symfony2?

大憨熊 提交于 2019-12-13 05:25:35

问题


I would like to know how to access to a javascript function inside another html.twig file in symfony2. Let's assume that we have two html.twig files: file1.html.twig and file2.html.twig . Let's also assume that their codes are as below:

the code of 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>

the code of file2.html.twig:

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

</body>
</html>

Actually, what I would like to do is that one the form in file1.html.twig is submitted there will be an execution of the function executer() inside the file file2.html.twig . Is it possible to do that in Symfony2 ??...If yes, what shall I put inside the function validate() of the file file1.html.twig ?


回答1:


You could put the javaScript in it's own twig file and the include that in your other twig files as required.
Example (passing a parameter in just for completeness);

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>



回答2:


You can also put the function in a JS file that you load in both twig files.

 //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>

Note that you can pass variable to validate and add parameters to execute also if you need some other data.



来源:https://stackoverflow.com/questions/25683340/how-to-access-to-a-javascript-function-inside-another-html-twig-file-in-symfony2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!