PHP-шаблон с Flow3
Создание шаблонов с помощью Flow3 выполняется с использованием языка шаблонов Fluid.
Есть ли интегрированное / простое решение для использования шаблонов PHP вместо этого? (без необходимости писать шаблон рендерера самостоятельно)
(чтобы избежать недоразумений: под шаблоном PHP я имею в виду код HTML, смешанный с PHP)
2 ответа
Весь смысл жидкости не в том, чтобы сделать это. Вы можете написать собственные помощники для этого.
Быстрый обходной путь - написать php viewhelper, который использует eval(). Но это было бы очень плохо с точки зрения безопасности.
Ваш контроллер обладает защищенным свойством, которое по умолчанию имеет значение Fluid, изменить его на что-то другое очень просто:
protected $viewFormatToObjectNameMap = array('json' => '\TYPO3\FLOW3\MVC\View\JsonView');
Теперь взгляните на пустой контроллер в том же каталоге: \TYPO3\FLOW3\MVC\View\
Вы можете использовать это как начало. То, что вам в основном нужно сделать, - это выполнить метод assign, способ передачи переменных в вашу тему.
Затем предложите несколько стандартов (например, файлы-шаблоны должны находиться в папке \ Resources \ Private \ Templates \ ControllerName \ ActionName.phtml, обратите внимание на расширение файла) и скажите, какая переменная будет доступна там (например, $view).
Теперь очень простой подход:
protected $view = array();
public function assign($key, $value) {
$this->view[$key] = $value;
}
public function render() {
$this->controllerContext->getResponse()->setHeader('Content-Type', 'text/html');
$view = $this->view;
ob_start();
include_once($this->getTemplatePathAndFilename());
$output = ob_get_contents();
ob_end_clean();
return $output;
}
}
Для функции $this->getTemplatePathAndFilename() вы можете использовать код из метода TYPO3\Fluid\View\TemplateView->getTemplatePathAndFilename() и настроить его в соответствии со своими потребностями.
В ваших файлах шаблонов теперь вы можете использовать переменную $view.
Я нахожусь у моих родителей на Пасху, и им не хватает среды выполнения, так что это не проверено, и вы, скорее всего, столкнетесь с проблемами, но это должно вас начать!