sabato 29 novembre 2014

Magento, verificare il controller utilizzato

Ottenere il nome del controller con la classe Mage_Core_Model_Url

Verificare il nome del controller attivo può essere utile per far comparire un output diverso a seconda delle situazioni.

Ad esempio immaginiamo di voler attribuire una classe CSS ad un tag a seconda che ci troviamo sulla home page o nella pagina del prodotto.

Verifica del controller nei file template (.phtml)

Possiamo ottenere il nome del controller che sta utilizzando Magento in questo modo:
$this->getRequest()->getControllerName();
Quindi se ci troviamo sulla home page otterremo "index", se ci troviamo nella scheda prodotto otterremo "product".

In questo modo avremo:
$controller=$this->getRequest()->getControllerName();
if( $controller=="index" ):
//sono sulla home page quindi
  $class="stile1";
elseif( $controller=="product" ):
//sono nella scheda prodotto
  $class="stile2";
endif;
echo '<span class="'.$class.'">Nome prodotto</span>
L'oggetto Request può anche restituire altre utili informazioni, ad esempio:
//nome della funzione usata dal controller
$this->getRequest()->getActionName();

//indirizzo della route corrente
$this->getRequest()->getRouteName();

//nome del modulo corrente
$this->getRequest()->getModuleName();

Richiamare il controller all'interno delle classi

getRequest può essere richiamato da $this solo nei file .phtml, ma se ci troviamo all'interno di una classe, $this restituirà la classe stessa, quindi il metodo getRequest() non sarà disponibile.

Per ottenere le informazioni sopra descritte sarà quindi necessario utilizzare Mage::app() al posto di $this.

La classe che ci viene in aiuto per ottenere queste informazioni è Mage_Core_Model_Url. Possiamo verificare il contenuto dell'oggetto con un print_r():

You can explore all requests with print_r.

echo "<pre>";
    print_r(Mage::app()->getRequest());
echo "</pre>";

Nessun commento:

Posta un commento