如何将javascript集成到phalcon php的.volt模板引擎中

时间:2014-04-03 06:49:14

标签: javascript php phalcon

我需要在使用框架PhalconPHP

的项目中使用http://blueimp.github.io/jQuery-File-Upload/

为了做到这一点,我的.volt文件需要包含像这样的javascript代码

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

但问题是{%和%}是.volt模板语法。当我像这样使用{% for (var i=0, file; file=o.files[i]; i++) { %}时,.volt语法和javascript语法是冲突的。浏览器(如Chrome或Firefox)将显示错误:&#34;语法错误,意外令牌(在/ var / www / ....第77行和第34行;其中77是该行以{%

开头)

在.phtml中它工作正常,但我不想用.phtml重建我的整个视图模板 如何在.volt中使用此代码? javascript的其他语法是否与{%和%}不同? 谢谢!

4 个答案:

答案 0 :(得分:2)

你可以:

    此插件使用的
  1. Change javascript template syntax
  2. jQuery文件上传中的
  3. Use different templates
  4. 导致伏特问题的回声串("{%", "%}", "{{", "}}"):
  5. <script id="template-upload" type="text/x-tmpl">
    {{ '{%' }} for (var i=0, file; file=o.files[i]; i++) { {{ '%}' }}
    

    (3)有点乱,但应该有用。

答案 1 :(得分:2)

@jodator有一个很好的方法。

或者,您可以在Volt模板中使用PHP

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

这里唯一的问题是你必须要小心变量的范围,以便PHP可以处理它们。例如,如果o.files是一个javascript对象,那么你需要将它作为PHP中的变量传递。如果它是PHP对象,那么您只需要将其更改为$o.files

答案 2 :(得分:1)

您可以根据Javascript模板文档更改模板正则表达式:

要为模板语法使用不同的标记,请使用修改后的正则表达式覆盖tmpl.regexp,方法是交换所有出现的“{%”和“%}”,例如“[%”和“%]”:

tmpl.regexp = /([\s'\\])(?!(?:[^[]|\[(?!%))*%\])|(?:\[%(=|#)([\s\S]+?)%\])|(\[%)|(%\])/g;

查看自述文件: https://github.com/blueimp/JavaScript-Templates#template-parsing

答案 3 :(得分:0)

试试jquery文件上传插件的代码:

$$