2014-10-27 6 views
2

Я использую underscorejs систему шаблонов в одном из моих плагинов WordPress, но один из пользователей отправить мне это сообщение:PHP смешиваясь <PHP <% Подчеркивание шаблон

Parse error: syntax error, unexpected T_VAR in /wp-content/plugins/dnui-delete-not-used-image-wordpress/html/backup.php on line 13

После выполнения некоторого поиска, я пришел вывод, что PHP интерпретирует <% как <?php и пытается запустить код, но код в JS/шаблон подчеркивания

<% var src; %> 

Любой из вас есть какие-либо идеи, почему это? как это исправить? Я пытаюсь найти, как изменить

<?php 

для другого типа, но только получил ответ

<? 
+3

Отключить это: http://php.net/manual/en/ini.core.php#ini.asp-tags –

+0

Что значит «php принимает <% like»? Как и в том, что он преобразует '

+0

Спасибо @SergiuParaschiv Я пытался найти эту информацию в документации php, но видно, что я не делал хороший поиск. – nicearma

ответ

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)); 
Смежные вопросы