PHP混合<! - ?php <%下划线模板 - >

时间:2014-10-27 12:52:40

标签: php underscore.js wordpress

我在我的一个wordpress插件中使用了underscorejs模板系统,但其中一个用户发给我这条消息:

  

解析错误:语法错误,第13行/wp-content/plugins/dnui-delete-not-used-image-wordpress/html/backup.php中的意外T_VAR

在做了一些搜索之后,我得出的结论是php正在解释像<%这样的<?php并尝试运行代码,但代码是在js /模板下划线

<% var src; %>

你们任何人都知道为什么会这样?怎么解决?我尝试搜索如何更改

<?php

对于另一种类型,但只得到

的答案
<? 

1 个答案:

答案 0 :(得分:0)

如果您使用wp.template作为模板,则可以找到答案here

如果您在js文件中直接使用下划线模板,则应更改模板设置,如下所示:

    /*
     * Underscore's default ERB-style templates are incompatible with PHP
     * when asp_tags is enabled, so your template uses Mustache-inspired templating syntax.
     *
     * Make the underscore template like wp.template function
     *
     */
    var templateSettings = {
        evaluate    :  /<#([\s\S]+?)#>/g,
        interpolate : /\{\{\{([\s\S]+?)\}\}\}/g,
        escape      : /\{\{([^\}]+?)\}\}(?!\})/g,
        variable    : 'data'
    };

    var innerGizmoTemplate = '<div class="{{ data.className }}">'
    + ' <# _.each( data.params, function( param ){ #>'
    + ' <div class="karma-builder-gizmo-{{ param.type }} {{ param.className }} ">'
    + ' <# if( "icon" === param.type ){ #>'
    + ' <div>{{{ param.icon }}}</div>'
    + '<# } else if( "text" === param.type ) {#>'
    + '<div>{{{ param.value }}}</div>'
    + '<# } #>'
    + '</div>'
    + '<# }) #>'
    + '</div>' ;

// then get it easily like this
var compiled =  _.template( innerGizmoTemplate, templateSettings );
console.log( compiled( YourParams ) );