2013-01-15 11 views
11

CONTESTO:Partial dei baffi in PHP - Come li uso?

Ho letto il maggior numero possibile di documentazione di Moustache ma non riesco a capire come utilizzare i partial o anche se sto usando il Moustache nel modo corretto.

Il codice seguente funziona correttamente. Il mio problema è che ho tre file Moustache che voglio includere e renderizzare tutto in una volta.

Immagino che questo sia il significato dei partial, ma non riesco a farlo funzionare.


DOMANDE:

Come vorrei ottenere parziali che lavorano in questo contesto in modo che i miei tre file Moustache vengono caricati e sono tutti di essere passati alla variabile $ data?

Devo utilizzare file_get_contents in questo modo per il modello? Ho visto le funzioni di baffi in uso al suo posto, ma non riesco a trovare una documentazione abbastanza estesa per farlo funzionare.


ENV:

Sto usando l'ultima versione di baffi da https://github.com/bobthecow/mustache.php

I miei file sono:
index.php (sotto)
template.mustache
template1.mustache
template2.mustache
class.php


CODICE:

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

GRAZIE:

Eventuali esempi di attuazione PHP di parziali (compreso il modo la struttura file necessario dovrebbe costituire) sarebbe molto apprezzato, solo così sono in grado di ottenere una solida comprensione :)

+0

Consentitemi di suggerire questo post completo di esempi inclusi partial, ma non incluse le strutture di file, in quanto questo dipende da voi/dal vostro framework: http://coenraets.org/blog/2011/12/tutorial-html-templates- with-moustache-js/ –

+0

Grazie. In realtà sto cercando un'implementazione PHP con esempi usando template memorizzati in file separati. – Lishamatish

risposta

20

Il modo più semplice è utilizzare il caricatore di modelli "filesystem":

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

Quindi, supponendo che il template.mustache simile a questa:

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

I template2.mustache e template3.mustache modelli saranno caricati automaticamente dalla directory corrente quando necessario.

Si noti che questo caricatore viene utilizzato sia per il modello originale che per i parziali. Se avete i vostri parziali memorizzati in una sottodirectory, ad esempio, è possibile aggiungere un secondo caricatore appositamente per i partial:

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

C'è di più informazioni su questi e altri Mustache_Engine opzioni su the Mustache.php wiki.

+0

Grazie mille per questo chiarimento. Moustache è il primo sistema di template che ho usato, solo bisogno di qualche chiarimento sulla struttura del file. Grazie ancora :) – Lishamatish

+2

Nessun problema. Ho aggiunto una pagina di caricamento del modello al wiki di Mustache.php, spero che questo possa aiutare a chiarire anche questo: https://github.com/bobthecow/mustache.php/wiki/Template-Loading – bobthecow

+0

Mi ci è voluto un po 'per ottenere questo rotolamento ma funziona alla grande. Questo semplificherà enormemente la nostra piattaforma. Grazie dal 2017! –