Intereting Posts
Класс pagination PHP Аутентификация с использованием нескольких таблиц в Laravel 5.2 Генерирование (псевдо) случайных буквенно-цифровых строк Как проверить, является ли это слово японским или английским, используя PHP Перенаправление на диалог проверки подлинности – «Произошла ошибка. Пожалуйста, повторите попытку позже" Как вернуть строку клиенту после установки заголовка Amazon ec2 не может отправлять push-уведомления на ios PHPExcel – ошибка при попытке вставить изображение после загрузки и записи Как очистить URI заголовков с помощью PHP? Только PHP Code Calculator с Clickable Button в качестве входа простой массив в ассоциативный массив, основанный на «дереве каталогов», как значения первого скрипт (while-loop) останавливается и не имеет выхода, когда выбрано несколько столбцов Как я могу получить значения из CKEDITOR, используя POST в PHP? PHP цикл X количество раз Стиль в xampp отличается от файлов на моем рабочем столе?

Как загрузить шаблон из полного пути в движок шаблонов TWIG

Мне интересно, как загрузить шаблон из его полного пути (например, FILE constant give).

На самом деле вам нужно установить «корневой» путь для шаблона следующим образом:

require_once '/path/to/lib/Twig/Autoloader.php'; Twig_Autoloader::register(); $loader = new Twig_Loader_Filesystem('/path/to/templates'); $twig = new Twig_Environment($loader, array( 'cache' => '/path/to/compilation_cache', )); 

А потом :

 $template = $twig->loadTemplate('index.html'); echo $template->render(array('the' => 'variables', 'go' => 'here')); 

Я хочу вызвать метод loadTemplate с полным путем, а не просто именем файла.

Как я могу сделать ?

Я не хочу создавать свой собственный загрузчик для такой вещи.

благодаря

Solutions Collecting From Web of "Как загрузить шаблон из полного пути в движок шаблонов TWIG"

Просто сделайте это:

 $loader = new Twig_Loader_Filesystem('/'); 

Так что -> loadTemplate () будет загружать шаблоны относительно / .

Или, если вы хотите иметь возможность загружать шаблоны как с относительным, так и с абсолютным путем:

 $loader = new Twig_Loader_Filesystem(array('/', '/path/to/templates')); 

Вот загрузчик, который загружает абсолютный (или нет) путь:

 <?php class TwigLoaderAdapter implements Twig_LoaderInterface { protected $paths; protected $cache; public function __construct() { } public function getSource($name) { return file_get_contents($this->findTemplate($name)); } public function getCacheKey($name) { return $this->findTemplate($name); } public function isFresh($name, $time) { return filemtime($this->findTemplate($name)) < $time; } protected function findTemplate($path) { if(is_file($path)) { if (isset($this->cache[$path])) { return $this->cache[$path]; } else { return $this->cache[$path] = $path; } } else { throw new Twig_Error_Loader(sprintf('Unable to find template "%s".', $path)); } } } ?> 

Расширьте загрузчик лучше, чем измените библиотеку:

 <?php /** * Twig_Loader_File */ class Twig_Loader_File extends Twig_Loader_Filesystem { protected function findTemplate($name) { if(isset($this->cache[$name])) { return $this->cache[$name]; } if(is_file($name)) { $this->cache[$name] = $name; return $name; } return parent::findTemplate($name); } }