underscore.js — PHP смешивает шаблон подчеркивания & lt;? php & lt;%

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

Ошибка разбора: синтаксическая ошибка, неожиданный T_VAR в /wp-content/plugins/dnui-delete-not-used-image-wordpress/html/backup.php в строке 13

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

<% var src; %>

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

<?php

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

<?

2

Решение

Если вы использовали wp.template для своих шаблонов, вы можете найти ответ Вот

если вы используете шаблон подчеркивания непосредственно в вашем 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 ) );
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]