Усы Частицы в PHP - Как их использовать?
КОНТЕКСТ:
Я прочитал как можно больше документации Mustache, но я не могу понять, как использовать частичные или даже если я правильно использую Mustache.
Код ниже работает правильно. Моя проблема в том, что у меня есть три файла Mustache, которые я хочу включить и отобразить все сразу.
Я предполагаю, что это то, что предназначены частичные, но я не могу заставить его работать.
ВОПРОСЫ:
Как я получу частичные работы, работающие в этом контексте, чтобы мои три файла Mustache загружались и все передавались переменной $data?
Должен ли я использовать file_get_contents таким образом для шаблона? Я видел, что функции Mustache используются на его месте, но я не могу найти достаточно обширной документации, чтобы заставить ее работать.
ENV:
Я использую последнюю версию Mustache от https://github.com/bobthecow/mustache.php
Мои файлы:
index.php(ниже)
template.mustache
template1.mustache
template2.mustache
class.php
CODE:
// This is index.php
// Require mustache for our templates
require 'mustache/src/Mustache/Autoloader.php';
Mustache_Autoloader::register();
// Init template engine
$m = new Mustache_Engine;
// Set up our templates
$template = file_get_contents("template.mustache");
// Include the class which contains all the data and initialise it
include('class.php');
$data = new class();
// Render the template
print $m->render( $template, $data );
СПАСИБО:
Любые примеры реализации частичных запросов PHP (включая необходимость создания необходимой файловой структуры) были бы весьма полезны, поэтому я мог бы получить четкое понимание:)
Ответы
Ответ 1
Простейшим является использование загрузчика шаблонов "файловой системы":
<?php
// This is index.php
// Require mustache for our templates
require 'mustache/src/Mustache/Autoloader.php';
Mustache_Autoloader::register();
// Init template engine
$m = new Mustache_Engine(array(
'loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__))
));
// Include the class which contains all the data and initialise it
include('class.php');
$data = new class();
// Render the template
print $m->render('template', $data);
Затем, если ваш template.mustache
выглядит примерно так:
{{> template2 }}
{{> template3 }}
Шаблоны template2.mustache
и template3.mustache
будут автоматически загружаться из текущего каталога, когда это необходимо.
Обратите внимание, что этот загрузчик используется как для исходного шаблона, так и для частичных. Если у вас есть частичные файлы, хранящиеся в подкаталоге, например, вы можете добавить второй загрузчик специально для частичных:
<?php
$m = new Mustache_Engine(array(
'loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views'),
'partials_loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views/partials')
));
Там больше информации об этих и других опциях Mustache_Engine
на вики-странице Mustache.php.