Magento 2.3 Не может просматривать вывод интерфейсной страницы модуля?
Я немного новичок, когда дело доходит до разработки модулей для Magento 2, и мне нужна помощь: я начал разрабатывать модуль (в целях тестирования) для локальной установки Magento 2.3. Теперь я думаю, что все сделал правильно (я создал module.xml, в registration.php, ecc..) и я пытаюсь вывести простое сообщение на интерфейсе. Это мой код:
-
Routers.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd"> <router id="standard"> <route id="test" frontName="test"> <module name="Ronk_Test" /> </route> </router>
-
Test_index_index.xml
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <head> <title>Ronk Test Page</title> </head> <body> <referenceContainer name="content"> <block class="Ronk\Test\Block\Test" name="testPage" template="Ronk_Test::test.phtml" /> </referenceContainer> </body>
Тест.phtml
Echo $block->getTest();
Echo __('This is a text.')
- Index.php
namespace Ronk\Test\Controller\Index; use Magento\Framework\App\Action\Context; use Magento\Framework\View\Result\PageFactory; use Magento\Framework\Controller\Result\ForwardFactory; use Magento\Framework\Exception\NotFoundException; use Magento\Framework\App\RequestInterface; /** * Contact index controller */ class Index extends \Magento\Framework\App\Action\Action { /** * @var PageFactory */ protected $resultPageFactory; /** * @var ForwardFactory */ protected $resultForwardFactory; /** * @var \Ronk\Test\Helper\Data */ protected $helper; /** * Index constructor. * * @param \Magento\Framework\App\Action\Context $context * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory * @param \Magento\Framework\Controller\Result\ForwardFactory $resultForwardFactory * @param \Ronk\Test\Helper\Data $helper */ public function __construct( Context $context, PageFactory $resultPageFactory, ForwardFactory $resultForwardFactory, \Ronk\Test\Helper\Data $helper ) { $this->resultPageFactory = $resultPageFactory; $this->resultForwardFactory = $resultForwardFactory; $this->helper = $helper; parent::__construct($context); } /** * Dispatch request * * @param RequestInterface $request * @return \Magento\Framework\App\ResponseInterface * @throws \Magento\Framework\Exception\NotFoundException */ public function dispatch(RequestInterface $request) { if (!$this->helper->isEnabled()) { throw new NotFoundException(__('Page not found.')); } return parent::dispatch($request); } /** * Ronk Test Page * * @return \Magento\Framework\View\Result\Page */ public function execute() { /** @var \Magento\Framework\View\Result\Page $resultPage */ $resultPage = $this->resultPageFactory->create(); $resultPage->getConfig()->getTitle()->set(__('Ronk Test Page')); if (!$resultPage) { $resultForward = $this->resultForwardFactory->create(); return $resultForward->forward('noroute'); } return $resultPage; } }
- Data.php
namespace Ronk\Test\Helper; /** * Ronk Test helper */ class Data extends \Magento\Framework\App\Helper\AbstractHelper { /** * Path to store config if extension is enabled * * @var string */ const XML_PATH_ENABLED = 'ronk/basic/enabled'; /** * Check if extension enabled * * @return string|null */ public function isEnabled() { return $this->scopeConfig->isSetFlag( self::XML_PATH_ENABLED, \Magento\Store\Model\ScopeInterface::SCOPE_STORE ); } }
Я, конечно, следовал руководству (будучи новичком в этом) и, похоже, не могу понять, что я делаю не так. Всякий раз, когда я захожу в 127.0.0.1/magento23/тест/индекс/индекс, он дает мне 404. Есть какие-нибудь предложения?
2 answers
routes.xml
файл должен присутствовать в каталоге Ronk/Test/etc/frontend
. Также убедитесь, что имя файла не routers.xml
.
Не совсем уверен, в этом ли проблема, но если вы создадите ссылку на свой блок следующим образом:
$blockObj = $block->getLayout()->createBlock('Ronk\Test\Controller\Index\Index');
, А затем вы можете использовать $blockObj
для доступа к методам блокировки, таким как $blockObj->getTest()