In ogni
sistema PHP, il principale entry point
rimane un file PHP, anche Magento non è da meno e il suddetto file è il file index.php.
In ogni
caso, non si deve mai modificare il codice all’interno di index.php. In un sistema
MVC, index.php contiene il codice e le chiamate al
codice per fare queste operazioni:
2. Basandosi su un insieme di rules, reinviare questa URL a una classe Controller e ad un Action method (Routing).
3. Istanziare la classe Controller e chiamare l’Action method (Dispatching)
Questo
significa che l’entry point in Magento (o in ogni sistema MVC-based ) è un
metodo in un file Controller.
Consideriamo
la seguente URL:
http://example.com/catalog/category/view/id/25
Dopo il nome
del server ogni porzione del path viene parsizzata come segue:
Front Name – catalog
La prima
parte dell’URL è chiamata front name. Questo, più o meno, comunica a magento
quale Module puo’ trovare all’interno del Controller.
Nell’esempio sopra il front name è catalog che corrisponde ad un Module localizzato in :
Nell’esempio sopra il front name è catalog che corrisponde ad un Module localizzato in :
app/code/core/Mage/Catalog
Controller Name – category
La seconda
porzione dell’URL dice a Magento quale Controller dovrebbe usare. Ogni
Module contenente dei Controllers ha una
cartella speciale chiamata “controllers” la quale contiene tutti i Controllers
del Module. Nell’esempio sopra, la porzione di URL category si traduce
all’interno del file Controller:
app/code/core/Mage/Catalog/controllers/CategoryController.php
E la classe sarà una cosa del genere:
class Mage_Catalog_CategoryController extends Mage_Core_Controller_Front_Action
{
}
{
}
Tutti I
Controller nell’applicazione carrello di Magento ereditano da
Mage_Core_Controller_Front_Action .
Action Name – view
Al terzo
posto della nostra URL arriva l’action name. Nel nostro esempio è “view”. La
parola “view” è usata per create l’Action Method. Quindi nel nostro esempio,
“view” diventerà “viewAction”.
class Mage_Catalog_CategoryController extends Mage_Core_Controller_Front_Action
{
public function viewAction()
{
//main entry point
}
}
{
public function viewAction()
{
//main entry point
}
}
Chi conosce
Zend Framework noterà qui una familiarità con le convenzioni di denominazione.
Parameter/Value – id/25
Ogni
porzione di percorso dopo l’action name verrà considerata come una richiesta di
variabili di tipo GET key/value. Quindi
nel nostro esempio “id/25” significa che prenderemo una variabile GET
denominata “id” con valore “25”.
Come già
detto, se vuoi che un Module personalizzato usi il Controller, li dovrai
configurare. Segue una porzione di configurazione che abilita i Controller per
il Catalog Module:
<frontend>
<routers>
<catalog>
<use>standard</use>
<args>
<module>Mage_Catalog</module>
<frontName>catalog</frontName>
</args>
</catalog>
</routers>
</frontend>
<routers>
<catalog>
<use>standard</use>
<args>
<module>Mage_Catalog</module>
<frontName>catalog</frontName>
</args>
</catalog>
</routers>
</frontend>
In questo
momento focalizziamo l’attenzione su
<frontName>catalog</frontName>
Questo collega
un Module con una frontname URL. La maggior parte dei core Modules in Magento
scelgono un frontname che sia lo stesso del nome del loro Module anche se
questo non è obbligatorio.
Multiple Routers
Il routing
descritto sopra è per l’applicazione cart (carrello) di Magento (spesso
chiamato frontend). Se Magento non trovasse un valido Controller/Action per una
URL, proverebbe di nuovo, usando questa volta un secondo insieme di Routing
rules per l’applicazione Admin. Se non trovasse una valida Admin
Controller/Action, utilizzerà uno speciale Controller denominato Mage_Cms_IndexController.
Il CMS
Controller controlla che il sistema di gestione di contenuti di Magento per
vedere se c’è qualche contenuto da caricare. Se ne trova, li carica, altrimenti
l’utente viene reindirizzato ad una pagina 404.
Link e Fonte: magentocommerce.com
Link e Fonte: magentocommerce.com






0 commenti:
Posta un commento