piavgh piavgh - 6 months ago 157
PHP Question

How to integrate javascript to .volt template engine of phalcon php

I need to use http://blueimp.github.io/jQuery-File-Upload/ in my project which use framework PhalconPHP

In order to do so, my .volt file need to contain a javascript code like this

<script id="template-upload" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %} //The problem begin here
<tr class="template-upload fade">
<td>
<span class="preview"></span>
........//Some similar code here
</td>
</tr>
{% } %}
</script>


But the problem is {% and %} is .volt template syntax. When I use
{% for (var i=0, file; file=o.files[i]; i++) { %}
like that, the .volt syntax and javascript syntax are conflict. Browser such as Chrome or Firefox will show the error : "Syntax error, unexpected token ( in /var/www/.... on line 77" where 77 is that line start with {%

In .phtml it works fine, but I don't want to rebuild my whole view template with .phtml
How can I use this code with .volt? Is there other syntax for javascript which is different from {% and %} ?
Thank you!

Answer

@jodator has a good approach.

Alternatively you can use PHP in your Volt template

<script id="template-upload" type="text/x-tmpl">
<?php foreach (.....) { ?>
   <tr class="template-upload fade">
   <td>
       <span class="preview"></span>
       ........//Some similar code here
   </td>
   </tr>
 <?php } ?>
 </script>

The only issue here is that you have to be careful on what the scope of your variables are so that PHP can process them. For instance if o.files is a javascript object then you need to pass it as a variable in PHP. If it is a PHP object then all you will have to do is change it to $o.files