Własny kontroler w Magento

Własny kontroler w Magento 5.00/5 / 5

Jedną z elementarnych umiejętności podczas tworzenia modułu Magento jest napisanie własnego kontrolera. Generalnie chodzi nam o to, aby po wpisaniu adresu w przeglądarce pojawiła się zawartość generowana przez nasz moduł. Oczywiście podstawą jest stworzenie modułu Magento o czym było już w poprzednich postach.

Drugim krokiem jest stworzenie katalogu i pliku naszego kontrolera:

app/code/local/Magentos/Tutorial/controllers/TutorialController.php

Wewnątrz pliku kontrolera tworzymy klasę Magentos_Tutorial_TutorialController dziedziczącą po  Mage_Core_Controller_Front_Action:

class Magentos_Tutorial_TutorialController extends Mage_Core_Controller_Front_Action{
    public function someAction(){
        echo Mage::getUrl('magentos/tutorial/some');
    }
}

Na razie nasz plik zawiera tylko jedną metodą, która wyświetla adres akcji. Użyta do tego jest statyczna metoda  Mage:getUrl();.

Drugi krok, to konfiguracja routera, czyli poinformowanie Magento o tym jaki adres będzie mapowany do którego modułu. W tym celu otwieramy plik:

app/code/local/Magentos/Tutrial/etc/config.xml

i w tagu global dodajemy odpowiednio:

    <frontend>
        <routers>
            <magentos>
                <use>standard</use>
                <args>
                    <module>Magentos_Tutorial</module>
                    <frontName>magentos</frontName>
                </args>
            </magentos>
        </routers>
         
    </frontend>

I to na razie na tyle apropos routerów i kontrolerów w Magento. W tym momencie można już znaleźć efekt naszych poczynań pod takim mniej więcej adresem:

localhost.local/index.php/magentos/tutorial/some

Warto przy okazji przyjrzeć się też metodzie

Mage::getUrl('magentos/tutorial/some');

Parametr przekazywany do niej zawiera trzy człony. Pierwszy z nich nawiązuje do routera określonego w pliku config.xml w tagu frontName. Drugi to nazwa klasy a trzeci to nazwa metody w klasie. W kolejnych postach dowiecie się też, że nawiązuje on również do definicji w plikach layoutu

Niebawem kolejny post o tym ja spiąć do kupy kontroler, blok i layout.

Kod z tego przykładu wraz z poprzednimi znajdziesz tu: https://github.com/magentos-pl/nauka.git