Smarty php .tpl - Вызов функции

У меня есть умный php-код:

в моем файле sample.tpl:

{require_once(test.php)}
{php}
echo test();
{/php}

и в моем файле test.php:

<?php
function test(){
  return "hi";
}
?>

По какой-то причине это ломает весь шаблон и не работает. Также обратите внимание, что {php} echo "hi" {/php} работает нормально.

В конечном итоге мне просто нужно запустить код, прикрепленный к кнопке. Если есть простой способ сделать это в smarty (например, оператор if или что-то в этом роде), дайте мне знать.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
561
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В Smarty.
нет require_once() Вероятно, вам нужно переместить его в свой блок PHP:

{php}
require_once("test.php");
echo test();
{/php}

В качестве альтернативы, если вы используете Smarty V3, использование функций и блоков {php} может быть ограничено настройками безопасности: https://www.smarty.net/docsv2/en/variable.security.tpl

Нет, я использую v2. Это блокирует меня даже от выполнения {php} function test() {return "hi"} echo test(); {/php}. Мне нужно найти способ определить здесь функцию, а затем использовать ее.

Jay Shri 03.04.2018 17:44

@JayShri Это не работает, потому что вам не хватает ; после вашего заявления return.

Cobra_Fast 03.04.2018 18:46
Ответ принят как подходящий

Обычно вам не нужно использовать require или require_once внутри Smarty, функция, доступная в рамках сценария вызывающего абонента (который загрузил шаблон), также должна быть доступна в шаблоне ...

Пытаюсь включить в сам шаблон. Я заметил, что не могу определять функции внутри тегов {php} {/ php}. Есть ли обходной путь для этого? Мне просто нужна простая кнопка для выполнения нескольких строк кода.

Jay Shri 03.04.2018 17:40

Если вам нужна кнопка внутри HTML для выполнения какого-либо действия, вам, вероятно, потребуется использовать Javascript, или, если вам действительно нужно запросить сервер (PHP), вы используете Ajax, функция PHP обычно используется для организации вашего кода PHP.

ankabot 03.04.2018 17:54

Все мои классы (модели db и т. д.) Находятся на php. Проблема в том, что в файле smarty tpl я не могу написать код php, который мне нужен для обработки отправки формы. Мне нужно знать, как объявлять функции в smarty.

Jay Shri 03.04.2018 18:11

Хорошо, но обработка отправки формы рассматривается как «логический код», и поэтому ее не следует помещать в шаблон Smarty. Как я уже сказал, если вам действительно нужно вызвать пользовательскую функцию PHP, вы определяете ее в вызывающем скрипте и используете в своем шаблоне Smarty.

ankabot 03.04.2018 18:46

Другие вопросы по теме