2013-01-15 14 views
11

KONTEKST:Części wąsów w PHP - jak ich używać?

Przeczytałem jak najwięcej dokumentacji na temat wąsów, ale nie mogę zrozumieć, jak używać częściowych lub nawet, czy używam wąsów we właściwy sposób.

Poniższy kod działa poprawnie. Mój problem polega na tym, że mam trzy pliki Mustache, które chcę dołączyć i renderować wszystkie naraz.

Zgaduję, że to jest to, do czego są przeznaczone częściowe elementy, ale nie mogę sprawić, żeby działały.


PYTANIA:

Jak dostanę partials pracujących w tym kontekście tak, że moje trzy Moustache pliki są ładowane i wszyscy są przekazywane zmienną $ danych?

Czy mogę używać file_get_contents w ten sposób do szablonu? Widziałem funkcje wąsy używane w jego miejsce, ale nie mogę znaleźć wystarczająco obszerną dokumentację, aby działało.


ENV:

Używam najnowszej wersji Moustache od https://github.com/bobthecow/mustache.php

Moje pliki są:
index.php (poniżej)
template.mustache
template1.mustache
template2.mustache
class.php


KOD:

// 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); 

DZIĘKUJEMY:

Wszelkie przykłady realizacji PHP podszablonów (w tym, w jaki sposób konieczny struktura plików musiałyby być) byłoby bardzo mile widziane, tak, że jestem w stanie uzyskać solidne zrozumienie :)

+0

Pozwolę sobie zasugerować ten post pełen przykładów, w tym częściowych, ale bez uwzględniania struktur plików, ponieważ to zależy od Ciebie/Twojej struktury: http://coenraets.org/blog/2011/12/tutorial-html-templates- with-mustache-js/ –

+0

Dziękuję. Naprawdę szukam implementacji PHP z przykładami wykorzystującymi szablony przechowywane w osobnych plikach. – Lishamatish

Odpowiedz

20

Najprostszy jest użycie modułu ładującego szablon: "

<?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); 

Następnie, zakładając swoją template.mustache wygląda mniej więcej tak:

{{> template2 }} 
{{> template3 }} 

W template2.mustache i template3.mustache szablony będą automatycznie ładowane z bieżącego katalogu, gdy są potrzebne.

Należy zauważyć, że ten moduł ładujący jest używany zarówno dla szablonu oryginalnego, jak i częściowego. Jeśli masz swoje partials przechowywane w podkatalogu, na przykład, można dodać drugi ładowacz specjalnie dla podszablonów:

<?php 
$m = new Mustache_Engine(array(
    'loader'   => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views'), 
    'partials_loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views/partials') 
)); 

Jest więcej informacji na temat tych i innych opcji na the Mustache.php wikiMustache_Engine.

+0

Dziękuję bardzo za wyjaśnienie. Moustache to pierwszy system szablonów, z którego korzystałem, po prostu potrzebowałem wyjaśnienia struktury pliku. Jeszcze raz dziękuję :) – Lishamatish

+2

Bez problemu. Dodałem stronę ładującą szablon do wiki Mustache.php, mam nadzieję, że to pomoże również wyjaśnić - https://github.com/bobthecow/mustache.php/wiki/Template-Loading – bobthecow

+0

Trochę mi to zabrało działa świetnie. To znacznie uprości nasze szablony platformowe. Dzięki od 2017 roku! –

Powiązane problemy