Quando usare 'nome' e quando usare 'come'


26

Ho scoperto che quando provo ad usare il unsetChildmetodo, a volte devo usare l'attributo 'name' e gli altri 'as'. Sembra che se un blocco viene aggiunto normalmente, usi 'as' ma se viene aggiunto a un blocco usando il appendmetodo, potresti dover usare 'name'. Questo assunto è corretto?

Qual è il ragionamento alla base di questo ed esiste un modo standard per capire quale attributo dovresti usare?

Risposte:


15

Il blocco può sempre essere indicato da name. Alias ​​( as) viene utilizzato per semplificare il nome lungo di un blocco e l'unico differisce con l'ambito. Namedeve essere univoco all'interno della pagina e aliasall'interno di un blocco padre.


5
Temo che nulla di tutto ciò sia vero. Nel modello, non è possibile fare riferimento a un blocco in base al nome se ha un alias impostato. È possibile utilizzare solo l'alias. Per quanto riguarda l'unicità dell'alias, è vero il contrario: è stato introdotto l'alias per rendere possibile il rendering di un blocco diverso senza modificare il modello.
Jan Tomka,

5
@JanTomka ha dato l'uso principale degli alias. Va sottolineato che mentre l'affermazione secondo cui "non è possibile fare riferimento a un blocco con il suo nome se ha un alias impostato" è generalmente vera, esiste un metodo chiamato getBlockHtml()che a volte viene utilizzato per eseguire il rendering dei blocchi per nome.
benmarks

6

Quando usi as , puoi chiamare $ this-> getChildHtml ("as_value") sul modello phtml.

Il nome deve essere univoco e può essere utilizzato per i blocchi <riferimento> , <rimuovi> , ecc.

Ad esempio (catalog.xml):

<block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
    <block type="catalog/product_view_media" name="product.info.media" as="media" template="catalog/product/view/media.phtml"/>
</block>

Se apri il catalogo / prodotto / view.phtml vedrai:

<div class="product-img-box">
    <?php echo $this->getChildHtml('media') ?>
</div>

Vedi? as = "media", quindi $ this-> getChildHtml ('media') ...


5

Nessuno ha ancora risposto alla domanda particolare unsetChild. Metodi relativi ai figli di un blocco si riferiscono sempre ai blocchi figlio per alias, che è noto solo al genitore e, diversamente dal nome, non univoco a livello globale.

Ma se il blocco è stato creato senza definire un alias, l'alias assume il nome predefinito.

Quindi in breve, se il blocco figlio ha un alias esplicito, è necessario utilizzare l'alias. In caso contrario, utilizzare il nome.

Gli alias vengono dati as="..."se il blocco è stato creato come blocco figlio tramite XML o tramite parametro di azione se sono stati spostati o aggiunti dinamicamente con metodi come append(), insert()o setChild().

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.