2010-04-15 11 views
5

perché dovrei usare un componente invece di un'azione che rende parziale?Symfony: differenza tra Azione + parziale e Componente

Se le azioni possono rendere parziali, quando è meglio utilizzare i componenti?

Dammi luce su di esso ..

Javi

+2

azioni non sono destinati a rendere parziali. Utilizza un partial come "mini-template" che sta da solo e componente come "mini action e template". – Tom

risposta

7

componenti vengono utilizzati quando si desidera includere una sorta di blocco in diverse parti del sito (ad esempio, un "Top 10 di vendita" o qualcosa del genere simile) - richiede un codice di controller per il rendering. Si include l'output di un componente in un altro modello di un'azione/parziale/un altro componente utilizzando

include_component($module_name, $component_name, array('var1' => $var1));
si suppone che un'azione venga chiamata direttamente dal browser, quindi non è possibile includere l'output in un altro modello (senza alcun tipo di modifica) Pensa ai componenti come a un blocco riutilizzabile di html che può essere incluso ovunque, a tutte le azioni che vengono visualizzate e inviate al browser

+0

Grazie !, questo è quello che stavo cercando: "Un'azione dovrebbe essere chiamata direttamente dal browser, quindi non puoi includere l'output in un altro modello (senza un qualche tipo di hack)". Ma la mia domanda ora è: qual è la tua opinione sulla rimozione dei componenti e sull'aggiunta di un modo per includere le azioni (allo stesso modo dei componenti) nei modelli ?? Sto "pensando" nel chiedere ciò come una caratteristica per rendere symfony più semplice. – ziiweb

+1

Chiederebbe cosa esiste già: i componenti sono * esattamente * progettati per includere "azioni" nei modelli. – Raise

+2

non è una buona idea rimuovere i componenti, perché sono una versione leggera delle azioni (non passano attraverso il sistema di routing, i filtri ecc. In modo che siano più efficienti nel loro lavoro) – matei

5

parziale è un 'modello' che può essere riutilizzato in qualsiasi pagina di visualizzazione. il suo semplice & veloce. tutti i dati $ devono essere passati come parametri al parziale. imo, dovrebbe essere preferito se possibile.

componente è come un 'modello con la propria azione' che può essere riutilizzato in qualsiasi vista pagine. più potente, ma più lento rispetto al parziale. utilizzare se si dispone di parziali che richiedono la logica di business (vale a dire l'azione/Controller)

http://www.symfony-project.org/book/1_0/07-Inside-the-View-Layer#chapter_07_code_fragments

Problemi correlati