Структура на основе XML Magento вначале кажется немного запутанной и раздражающей, но хорошо известно, что в конечном итоге широкие возможности и возможности настройки ...
<adminhtml_example_index></adminhtml_example_index>
Этот тег относится к [маршрутизатор] [контроллер] [действие] Маршрутизатор - это уникальное имя для конкретной отправки.Из приведенного вами примера под тегом admin файла config.xml мы можем найти имя маршрутизатора adminhtml
.
<admin>
<routers>
<adminhtml>
<args>
<modules>
<awesome before="Mage_Adminhtml">Super_Awesome_Adminhtml</awesome>
</modules>
</args>
</adminhtml>
</routers>
</admin>
Под этим маршрутизатором находятся настройки модуля, относящиеся к этому маршрутизатору.
Так что, если URL содержит / admin / example / [index] , magento найдет правильный маршрутизатор, равный <adminhtml>
, тогданайдет контроллер с именем example
и найдет правильное действие, которое в этом случае index
(/ admin / example / будет отправлено на действие индекса по умолчанию)
<adminhtml_example_index>
<reference name="content">
<block type="awesome/adminhtml_example" name="example" />
</reference>
</adminhtml_example_index>
В файле макета для комбинаций действия контроллера маршрутизатора определены обновления макета.Здесь обновление будет применено к основному блоку с именем content
, который содержит раздел содержимого страницы. Тег
<block>
используется для определения блока, к которому мы должны обратиться.Тег <type>
важен.Он относится к правильному классу блоков, который должен использоваться при рендеринге этого макета (помните, что в структуре MVC Magento представление состоит как из классов блоков, так и из файлов phtml)
в awesome/adminhtml_example
здесь,awesome
- это имя конфигурации блока, указанное в файле config.xml .adminhtml_example
является классом блока, который будет использоваться.
См.
<global>
-----
<blocks>
<awesome>
<class>Super_Awesome_Block</class>
</awesome>
</blocks>
</global>
Под тегом block
определено уникальное имя блока (хорошее соглашение об именах сохранит уникальность) .Тогда путь к классам для этих блоков можно определить как Super/Awsome/Block/
.
Имя конфигурации блока теперь разрешено.adminhtml_example
является точным классом блока, который будет использоваться.Любое подчеркивание после имени блока (удивительно) будет преобразовано в разделитель каталогов.
В соответствии с этим полный путь к классу блоков будет
[codepool]/Super/Awsome/Block/Adminhtml/Example.php
.имя класса будет выглядеть так:
class Super_Awesome_Block_Adminhtml_Example extends ….
Если у нас есть файл макета, мы можем указать его здесь ... тогда этот файл .phtml
будет отображаться с использованием приведенного выше класса блока
<reference name="root">
<block type="page/html" name="root" template="simplepage.phtml" />
</reference>
Надеюсь, это поможет .. Извините, если что-то неясно ...