Как создать представление (view) для модуля в Magento 2
В сегодняшнем уроке вы узнаете, как создать View (представление) и его действие в Magento 2. В предыдущем уроке мы рассмотрели вопрос создания контроллера для Magento 2, а сегодня вы увидите, как связать представление (шаблон) с нашим действием! Мы будем использовать заготовки из предыдущего урока.
Добавьте папку view в корень модуля
Создайте папку view
в корне модуля /Sebweo/Test
. Именно эта папка будет содержать весь макет (файлы макета для Блока, который будет отображаться на сайте, и шаблоны). Создайте в этой папке каталог frontend
, в котором создайте 2 папки: layout
(для макетов) и templates
(для файлов шаблонов).
Добавьте phtml файл шаблона
Создайте файл test_view.phtml
в папке /Sebweo/Test/view/frontend/templates/
с таким контентом:
<div class="test_block"> <p>Тестовый блок</p> </div>
Здесь мы будем отображать html-контент, который будет доступен в действии (action) testirovka/proverka/index
(см. предыдущий урок).
Добавьте файл макета для действия
Теперь мы свяжем наше действие с нашим контроллером и шаблоном. Для этого создайте файл testirovka_proverka_index.xml
(обратите внимание на название <id_маршрута>_<название_контроллера>_<название_действия>
) в каталоге /Sebweo/Test/view/frontend/layout/, с таким содержимым:
<?xml version="1.0"?> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <referenceContainer name="content"> <block class="Magento\Framework\View\Element\Template" name="testBlock" template="Sebweo_Test::test_view.phtml"></block> </referenceContainer> </body> </page>
Имя файла очень важное. Для маршрута (URL) testirovka/proverka/index
мы должны назвать наш файл макета testirovka_proverka_index.xml
, чтобы Magento 2 автоматически получил наш файл макета из действия. Вам просто нужно заменить «/» в URL действия на «_«, и вы получите имя файла макета.
Для чего нужен этот файл?
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
Эта инструкция сообщает Magento 2, что мы обновляем макет этого действия с помощью шаблона 1column.phtml
.
<body> <referenceContainer name="content"> <block class="Magento\Framework\View\Element\Template" name="testBlock" template="Sebweo_Test::test_view.phtml"></block> </referenceContainer> </body>
Нод referenceBlock
позволяет Magento 2 получить блок с соответствующим именем (здесь content
).
Нод block
позволяет Magento 2 добавлять новый Блок, здесь этот блок будет использовать логический класс Magento\Framework\View\Element\Template
, будет носить имя testBlock
, и ему будет присвоен файл шаблона test_view.phtml
, который находится в модуле Sebweo_Test.
Этот блок XML кода позволяет вам создать блок в области content
(содержимого) веб-сайта и использовать файл-шаблон test_view.phtml
, который мы создали ранее.
Обратите внимание, что здесь мы используем класс Magento\Framework\View\Element\Template
, который является основным классом, что позволяет отображать .phtml шаблон без специальной логики.
Отредактируйте действие, чтобы получить его макет
Magento 2 для получения файла макета, нужна его загрузка с помощью метода loadLayout()
. А отображает он его с помощью функции renderLayout()
.
Отредактируйте файл /Sebweo/Test/Controller/Proverka/Index.php
следующим образом:
namespace Sebweo\Test\Controller\Proverka; class Index extends \Magento\Framework\App\Action\Action { public function execute() { $this->_view->loadLayout(); $this->_view->renderLayout(); } }
И теперь вы можете получить доступ к вашему шаблону через URL-адрес, который описан в предыдущем уроке: {DOMEN}/testirovka/proverka/index/
.
Теперь вы знаете, как добавить представление (view), связанное с действием вашего контроллера Magento 2. Примите наши поздравления!
До следующих уроков.