Domanda

Sto cercando di lavorare con quadro FatFree e cercando di utilizzare il motore di template. I rendere il modello con il seguente codice -

echo Template::serve('template.php');

Il problema che sto affrontando è che, all'interno del file template.php F3 tag vengono riconosciuti, ma qualsiasi codice PHP non funziona. Per esempio, se ho il seguente codice nel file template.php -

<?php
if (F3::get('var') == 'var1') {
   ?>
   <span>var1 is present</span>
   <?php
} else {
   ?>
   <span>var1 not present</span>
   <?php
}
?>

Qui sia var1 is present e var1 not present viene stampato indipendentemente dal valore di var. Inoltre, php per i cicli non funzionano -. Quindi, in pratica tutto il codice PHP non funziona

Tuttavia, se ho usato <F3:check> di scrivere il codice PHP sopra, allora tutto funziona bene. Non possiamo usare codice PHP nei template. Se questo è il caso, questa è una limitazione seria.

È stato utile?

Soluzione

Ho trovato la risposta, anche se non mi piace molto.

Ci sono due funzioni diverse, F3::render() e Template::serve()

Con F3::render() è possibile valutare le espressioni PHP e utilizzare il F3::get() per recuperare le variabili. Secondo il sito web: "The only issue with embedding PHP code in your templates is the conscious effort needed to stick to MVC principles"

Il Template::serve() è per templating solo. Significato suo semplicemente per elaborare il linguaggio di templating.

Quindi, in pratica, e sì fa schifo e non ha senso, si può valutare il codice PHP nel F3::render() e non è possibile utilizzare le variabili templating ({{@var}}) -OPPURE- è possibile utilizzare Template::serve() e si sono limitati a solo chiamando funzioni PHP, e non realmente valutare codice PHP.

Altri suggerimenti

Forse provare a utilizzare diversi template engine che vi permetterà di definire più facile la dipendenza blocchi variabili?

Per esempio in PHPTal http://phptal.org/manual/en/ dividere / tal-condition.html si può fare così:

<div tal:condition="php: var == 'var1'">
....
</div>

E 'non documentata, ma è possibile inserire il codice all'interno di {~ ~} in un modello e sarà convertito in <?php ?> quando il modello viene compilato (usando v3.6).

es. {~ @color = 'red' ~} diventerà <?php $color = 'red' ?>

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top