2015-07-26 12 views
5

sto lavorando con il motore di template Twig e vuole includere un subtemplate Linke il seguente esempio:Mantenere livello di rientro per il incluso Twig subtemplate

<header> 
    <div id="menu"> 
    {% include 'menu.twig' %} 
    </div> 
</header> 

Il file incluso contiene il seguente codice:

<ul> 
    <li>item 1</li> 
    <li>item 2</li> 
</ul> 

Ora Ramoscello genera il codice HTML followig:

<header> 
    <div id="menu"> 
    <ul> 
    <li>item 1</li> 
    <li>item 2</li> 
</ul> 
    </div> 
</header> 

Come si può vedere l'ind livello di entazione è corretto solo per la prima riga del file incluso che porta al codice sopra il quale è abbastanza disordinato e male da mantenere.

Come è possibile ottenere un'uscita corretta da Twig con una rientranza corretta come questa?

<header> 
    <div id="menu"> 
    <ul> 
     <li>item 1</li> 
     <li>item 2</li> 
    </ul> 
    </div> 
</header> 

risposta

1

Non penso che ci sia un modo per mantenere il rientro quando si includono i modelli. L'unica soluzione che posso immaginare sarebbe quella di passare il livello di indentazione in una variabile e utilizzare un ciclo nel modello incluso per prefissare quella quantità di spazi bianchi in ogni riga. Ovviamente questa "soluzione" sarebbe pazzesca e un incubo da mantenere.

Per quanto riguarda questo commento: "[...] che porta al codice sopra il quale è abbastanza disordinato e cattivo da mantenere." Mi piacerebbe dire quanto segue:

  • Non importa se l'HTML è "disordinato". I browser non si lamenteranno e gli utenti non lo vedranno.
  • È vero che è male da mantenere. Fortunatamente, si mantiene il modello Twig splendidamente allineato, non il codice HTML generato.

Tutto quanto sopra sarebbe diverso se il modello Twig stava generando un formato in cui "l'allineamento perfetto" è obbligatorio. Ma nel caso dell'HTML, per favore non perdere tempo allineando i tag.

+1

Anche se è vero che la maggior parte degli utenti non lo vedranno, guarderò spesso all'HTML delle pagine che ammiro per vedere cosa posso spigolare da loro da utilizzare nelle mie pagine web. Se l'HTML è formattato male (come tutto su una riga o con indentazione confusa) di quanto ho difficoltà a spigolare qualcosa da loro.Quando creo le mie pagine web, vorrei che fossero ben formattate in modo che altri possano imparare dal mio codice. Non lo considero uno spreco per niente. – weux082690

+0

Questo è il motivo per cui mi piace anche la giusta indentazione. Mi chiedo perché sia ​​così difficile per Twig. Ha solo bisogno di mantenere il livello di indentazione per tutte le righe nel file incluso (non solo il primo) e tutto andrebbe bene. – ProgUser44

1

Se si desidera solo per mantenere l'esatto rientro del sub-modello incluso, si può fare questo:

<header> 
    <div id="menu"> 
{% include 'menu.twig' %} 
    </div> 
</header> 

vale a dire mettere tutte le direttive "include" all'inizio della riga. Il risultato sarà:

<header> 
    <div id="menu"> 
<ul> 
    <li>item 1</li> 
    <li>item 2</li> 
</ul> 
    </div> 
</header> 

Ma in qualche modo ritengo che questo non sia abbastanza buono. Un'altra soluzione è quella di aggiungere il rientro nel sublayout, vale a dire

<ul> 
     <li>item 1</li> 
     <li>item 2</li> 
    </ul> 

ma ovviamente funziona solo se il sublayout è sempre inclusa, a un certo livello di rientro.

Ti suggerisco di prendere una strada completamente diversa e formattare la risposta dopo che viene generata, ad es. con un ascoltatore sull'evento kernel.response.

Problemi correlati