Smarty Template Engine — выгрузить / запретить плагины при использовании $ smarty- & gt; fetch

Как я могу выгрузить или запретить smarty основные плагины из шаблона при использовании $smarty->fetch('mytemplate.tpl') метод

Например шаблон mytemplate.tpl содержит {} Html_options а также {} Html_table

Когда используешь $smarty->fetch('mytemplate.tpl') только {} Html_options smarty должен разобрать, но {} Html_table не

удаление function.html_table.php из папки плагина не вариант, так как он все еще используется другим $smarty->fetch() вызов

1

Решение

Возможным решением является расширение от Smarty_Security Класс и включить Securty с помощью метода

$smarty->enableSecurity($instanceOfClass)

После того, как метод выборки был вызван, disableSecurity метод сделать трюк, чтобы включить все plugins/tags/modifiers снова.

К сожалению, когда используется enableSecurity и используются запрещенные функции, возникает исключение

Альтернативой является замена всех тегов / переменных / …, которые вы хотите запретить {} {Буквенные forbiddenTags} {/ буквальный} используя preg_replace перед звонком $smarty->fetch([...])

пример

# negate regular expression pattern to allow only the below tags
$pattern = "/\{(?!allowedTag1|allowedTag2).*?\}/";
$replacement = '{literal}$0{/literal}';

$content = preg_replace($pattern, $replacement, $content);
$smarty->fetch("string:" . $content);

Подробнее о классе безопасности здесь: http://www.smarty.net/docs/en/advanced.features.tpl

0

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

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

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