У меня есть умный php-код:
в моем файле sample.tpl:
{require_once(test.php)}
{php}
echo test();
{/php}
и в моем файле test.php:
<?php
function test(){
return "hi";
}
?>
По какой-то причине это ломает весь шаблон и не работает. Также обратите внимание, что {php} echo "hi" {/php} работает нормально.
В конечном итоге мне просто нужно запустить код, прикрепленный к кнопке. Если есть простой способ сделать это в smarty (например, оператор if или что-то в этом роде), дайте мне знать.






В Smarty.
нет require_once()
Вероятно, вам нужно переместить его в свой блок PHP:
{php}
require_once("test.php");
echo test();
{/php}
В качестве альтернативы, если вы используете Smarty V3, использование функций и блоков {php} может быть ограничено настройками безопасности: https://www.smarty.net/docsv2/en/variable.security.tpl
@JayShri Это не работает, потому что вам не хватает ; после вашего заявления return.
Обычно вам не нужно использовать require или require_once внутри Smarty, функция, доступная в рамках сценария вызывающего абонента (который загрузил шаблон), также должна быть доступна в шаблоне ...
Пытаюсь включить в сам шаблон. Я заметил, что не могу определять функции внутри тегов {php} {/ php}. Есть ли обходной путь для этого? Мне просто нужна простая кнопка для выполнения нескольких строк кода.
Если вам нужна кнопка внутри HTML для выполнения какого-либо действия, вам, вероятно, потребуется использовать Javascript, или, если вам действительно нужно запросить сервер (PHP), вы используете Ajax, функция PHP обычно используется для организации вашего кода PHP.
Все мои классы (модели db и т. д.) Находятся на php. Проблема в том, что в файле smarty tpl я не могу написать код php, который мне нужен для обработки отправки формы. Мне нужно знать, как объявлять функции в smarty.
Хорошо, но обработка отправки формы рассматривается как «логический код», и поэтому ее не следует помещать в шаблон Smarty. Как я уже сказал, если вам действительно нужно вызвать пользовательскую функцию PHP, вы определяете ее в вызывающем скрипте и используете в своем шаблоне Smarty.
Нет, я использую v2. Это блокирует меня даже от выполнения
{php} function test() {return "hi"} echo test(); {/php}. Мне нужно найти способ определить здесь функцию, а затем использовать ее.