Development

Documentation/it_IT/book/1.1/07-Inside-the-View-Layer (diff)

You must first sign up to be able to contribute.

Changes between Version 9 and Version 10 of Documentation/it_IT/book/1.1/07-Inside-the-View-Layer

Show
Ignore:
Author:
Fabrizio (IP: 62.177.1.65)
Timestamp:
03/02/09 17:32:49 (8 years ago)
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Documentation/it_IT/book/1.1/07-Inside-the-View-Layer

    v9 v10  
    238238### Partial 
    239239 
    240 Un partial è un pezzo di codice di template riutilizzabile. Per esempio, in una applicazione per pubblicazioni, il codice del template che visualizza un articolo è utilizzata nella pagina del dettaglio dell'articolo e anche nellalista dei migliori articoli e la lista degli ultimi articoli. Questo codice è il prefetto candidato per un partial, come illustrato nella Figura 7-2. 
     240Un partial è un pezzo di codice di template riutilizzabile. Per esempio, in una applicazione per pubblicazioni, il codice del template che visualizza un articolo è utilizzata nella pagina del dettaglio dell'articolo e anche nella lista dei migliori articoli e la lista degli ultimi articoli. Questo codice è il prefetto candidato per un partial, come illustrato nella Figura 7-2. 
    241241 
    242242Figure 7-2 - Riutilizzare i partial nei template 
    246246Come i template i partial sono file posizionati nella directory `templates/`, e contengono codice HTML con PHP inserito in esso. Il nome del file partial comincia sempre con un trattino basso (`_`), questo aiuta a distinguere i partial dai template, visto che sono posizionati nella stessa cartella `templates/`. 
    247247 
    248 Un template può includere partial sia nel suo stesso modulo, in un altro modulo o nella directory globale `templates/`. Inserisci un partial utilizzando l'helper `include_partial()` specificando il modulo e il nome del partialcome parametri (tralasciando l'underscore iniziale e il `.php` finale), come mostrato nel Listato 7-7. 
     248Un template può includere partial sia nel suo stesso modulo, in un altro modulo o nella directory globale `templates/`. Inserisci un partial utilizzando l'helper `include_partial()` specificando il modulo e il nome del partial come parametri (tralasciando l'underscore iniziale e il `.php` finale), come mostrato nel Listato 7-7. 
    249249 
    250250Listato 7-7 - Includere un Partial in un Template del Modulo `mymodule` 
    309309### Component 
    310310 
    311 Nel Capitolo 2, il primo script di esemepio è stato diviso in due parti per separare la logica dalla presentazione. Proprio come il pattern MVC si applica ad action e template, hai bisogno di dividere un partial in una parte logica e in una parte di presentazione. In questo caso, dovresti usre un component. 
     311Nel Capitolo 2, il primo script di esempio è stato diviso in due parti per separare la logica dalla presentazione. Proprio come il pattern MVC si applica ad action e template, hai bisogno di dividere un partial in una parte logica e in una parte di presentazione. In questo caso, dovresti usare un component. 
    312312 
    313313Un component è come una action, ma è molto più veloce. La logica del component sta in una classe che eredita da sfComponents, situata in un file `action/components.class.php`. La parte di presentazione sta in un partial. I metodi della classe sfComponents iniziano con la parola execute, proprio come le action, a possono passare delle variabili alla loro controparte nello stesso modo in cui le action passano variabili. I partial che servono da presentazione per i component prendono il loro nome dal component (senza execute all'inizio, ma con un trattino basso al suo posto). La Tabella 7.1 confronta le convenzioni sui nomi per action e component. 
    351351 
    352352>**TIP** 
    353 > Nello stesso modo in cui puoi separare i file delle action, la classe sfComponents ha una contropare sfComponent che consente di usare singoli file separati con lo stesso tipo di sintassi. 
    354  
    355 Per esempio, supponiamo di avere una barra laterale che mostra le ultime notizie su un dato argomento, in base al profilo dell'utente, che viene usata in diverse pagine. Le query necessarie per recuperare le notizie sono troppo complesse per stare in un semplice partial, quindi devono essere spostare in un component. La Figura 7-3 illustra l'esempio. 
     353> Nello stesso modo in cui puoi separare i file delle action, la classe sfComponents ha una controparte sfComponent che consente di usare singoli file separati con lo stesso tipo di sintassi. 
     354 
     355Per esempio, supponiamo di avere una barra laterale che mostra le ultime notizie su un dato argomento, in base al profilo dell'utente, che viene usata in diverse pagine. Le query necessarie per recuperare le notizie sono troppo complesse per stare in un semplice partial, quindi devono essere spostate in un component. La Figura 7-3 illustra l'esempio. 
    356356 
    357357Figura 7-3 Usare i component nei template 
    392392    <?php include_component('news', 'headlines') ?> 
    393393  
    394 Propro come i partial, i component accettano parametri addizionali in forma di array associativa. I parametri sono disponibili al partial con il loron ome, e il component tramite l'oggetto $this. Si veda il Listato 7-13 per un esempio. 
     394Proprio come i partial, i component accettano parametri addizionali in forma di array associativa. I parametri sono disponibili al partial con il loro nome, e il component tramite l'oggetto $this. Si veda il Listato 7-13 per un esempio. 
    395395 
    396396Listato 7-13 - Passare parametri ad un component e al suo template 
    435435    </div> 
    436436  
    437 Essendo piuttosto comune visualizzare un contenuto di default se lo slot non è deinito, l'helper `include_slot` restituisce un booleano che indica se lo slot è stato definito. Il Listato 7-15 mostra come prendere in considerazione questo valore per semplificare il codice. 
     437Essendo piuttosto comune visualizzare un contenuto di default se lo slot non è definito, l'helper `include_slot` restituisce un booleano che indica se lo slot è stato definito. Il Listato 7-15 mostra come prendere in considerazione questo valore per semplificare il codice. 
    438438 
    439439Listato 7-15 - Includere uno Slot `barra laterale` nel Layout 
    447447    </div> 
    448448 
    449 Ogni template ha la possibilità di definire i contenuti di uno slot (anche i partial possono farlo). Siccome gli slot sono pensati per contenere codice HTML, symfony offre un modo conveniente per definirli: basta scrivere il codice dello slot tra una chiamata agli helper `slot()` e `end_slot()`, come neln Listato 7-16. 
     449Ogni template ha la possibilità di definire i contenuti di uno slot (anche i partial possono farlo). Siccome gli slot sono pensati per contenere codice HTML, symfony offre un modo conveniente per definirli: basta scrivere il codice dello slot tra una chiamata agli helper `slot()` e `end_slot()`, come nel Listato 7-16. 
    450450 
    451451Listato 7-16 - Sovrascrivere lo Slot `barra laterale` in un Template 
    460460    <?php end_slot() ?> 
    461461 
    462 Il codice tra i due helper viene eseguito nel contesto del template, quindi ha accesso a tutte le variabili che sono state definite nella action. Symfony inserirà automaticamente il risultato di questo codice nell'oggetto risposta. Non sarà mostrato nel template, ma reso disponibili per future chiamate a `include_slot()`, come nel Listato 7-14. 
    463  
    464 Gli slot sono molto utili per definire zone pensate per mostrare un contenuto contestuale. Possono essere usati anche per aggiungere codice HTML al layout solo per alcune action. Per esempio, un template che mostra la lista delle ultime notizione potrebbe voler aggiungere un link al feed RSS nella parte `<head>` del layout. Si può fare semplicemente aggiungendo uno slot "feed" al layou e sovrascrivendolo nel template della lista. 
     462Il codice tra i due helper viene eseguito nel contesto del template, quindi ha accesso a tutte le variabili che sono state definite nella action. Symfony inserirà automaticamente il risultato di questo codice nell'oggetto risposta. Non sarà mostrato nel template, ma reso disponibile per future chiamate a `include_slot()`, come nel Listato 7-14. 
     463 
     464Gli slot sono molto utili per definire zone pensate per mostrare un contenuto contestuale. Possono essere usati anche per aggiungere codice HTML al layout solo per alcune action. Per esempio, un template che mostra la lista delle ultime notizie potrebbe voler aggiungere un link al feed RSS nella parte `<head>` del layout. Si può fare semplicemente aggiungendo uno slot "feed" al layout e sovrascrivendolo nel template della lista. 
    465465 
    466466Se il contenuto dello slot è molto breve, come per esempio nel caso di uno slot che definisce un `title`, puoi semplicemente passare il contenuto come secondo argomento del metodo `slot()`, come mostrato nel Listato 7-17.