Domanda

Sto cercando di capire il modo più efficiente di implementare parziali / raccolte in stile RoR per una classe di template PHP che sto scrivendo. Per coloro che non hanno familiarità con le rotaie, voglio scorrere su un frammento di modello (ad esempio una riga della tabella o un elemento dell'elenco) situato in un file separato. Voglio fare questo senza ricorrere a valutazione o inserendo una inclusione all'interno del ciclo .

Ho visto un post simile che risolve i singoli parziali, che sono banali, ma nulla che copre l'implementazione dei parziali in una raccolta. Ci sto pensando da così tanto tempo che mi fa male la testa e temo di trascurare una soluzione ovvia. Spero che qualcuno qui possa suggerire una soluzione elegante che, ancora una volta, non richiede valutazione o inclusione nel ciclo. TIA.

È stato utile?

Soluzione

Hai bisogno di un motore di template che possa elaborare da solo e quindi valutare tutto in una volta. Proprio come funziona il preprocessore c.

Passaggio 1 (modello di origine):

$template = '
   foreach($bigarray as $record)
       #include "template_for_record.php"
'

Passaggio 2 (dopo la preelaborazione):

$template = '
   foreach($bigarray as $record)
       // include statement replaced with file contents
       echo $record['name'] etc
'

Passaggio 3 (rendering finale)

  // eval() only once
  eval($template);

In questo modo puoi evitare il sovraccarico di valutare / includere subtemplate in ogni fase del ciclo.

Altri suggerimenti

Stai chiedendo come fare qualcosa senza ricorrere alla soluzione.

Qualsiasi sistema di template che usi utilizzerà una valutazione o un'inclusione all'interno del loop, anche se è sepolto in un'astrazione profonda 1000 strati.

È proprio così.

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