Magento 2.3 Не может просматривать вывод интерфейсной страницы модуля?


Я немного новичок, когда дело доходит до разработки модулей для Magento 2, и мне нужна помощь: я начал разрабатывать модуль (в целях тестирования) для локальной установки Magento 2.3. Теперь я думаю, что все сделал правильно (я создал module.xml, в registration.php, ecc..) и я пытаюсь вывести простое сообщение на интерфейсе. Это мой код:

  1. 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>
    

  2. 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>
    

  3. Тест.phtml

 

Echo $block->getTest();

Echo __('This is a text.')

  1. 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;
    }
} 
  1. 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. Есть какие-нибудь предложения?

Author: Utsav Gupta, 2018-12-20

2 answers

routes.xml файл должен присутствовать в каталоге Ronk/Test/etc/frontend. Также убедитесь, что имя файла не routers.xml.

 2
Author: Sufyan Khot, 2018-12-20 10:30:11

Не совсем уверен, в этом ли проблема, но если вы создадите ссылку на свой блок следующим образом:

$blockObj = $block->getLayout()->createBlock('Ronk\Test\Controller\Index\Index'); 

, А затем вы можете использовать $blockObj для доступа к методам блокировки, таким как $blockObj->getTest()

 0
Author: A. Fletcher, 2018-12-20 09:58:34