Подтвердить что ты не робот

Усы Частицы в 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 (включая необходимость создания необходимой файловой структуры) были бы весьма полезны, поэтому я мог бы получить четкое понимание:)

4b9b3361

Ответ 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.