当前位置: 技术文章>> magento2中的路由以及代码示例

文章标题:magento2中的路由以及代码示例
  • 文章分类: Magento
  • 10828 阅读
系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》

本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。


在Magento 2中,路由(Routes)是用于将HTTP请求路由到正确的控制器和操作的机制。以下是一个简单的示例,演示如何在Magento 2中定义和使用路由:


定义路由

要定义一个路由,您需要在模块的 etc/frontend/routes.xml 文件中添加以下内容:


<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="standard">
        <route id="my_module" frontName="my_module">
            <module name="My_Module"/>
        </route>
    </router>
</config>

上面的示例定义了一个名为 my_module 的前端路由,它将请求路由到名为 My_Module 的模块。


创建控制器

创建控制器是为路由处理请求的关键。在Magento 2中,控制器位于 Controller 目录中。以下是一个简单的示例:


<?php
namespace My\Module\Controller\Index;
use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;
class Index extends Action
{
    /**
     * @var PageFactory
     */
    protected $resultPageFactory;
    /**
     * Constructor
     *
     * @param Context $context
     * @param PageFactory $resultPageFactory
     */
    public function __construct(Context $context, PageFactory $resultPageFactory)
    {
        parent::__construct($context);
        $this->resultPageFactory = $resultPageFactory;
    }
    /**
     * Execute action based on request and return result
     *
     * @return \Magento\Framework\Controller\ResultInterface
     */
    public function execute()
    {
        return $this->resultPageFactory->create();
    }
}

上面的示例创建了一个名为 Index 的控制器,该控制器返回一个页面。


处理请求

现在,您可以处理来自前端路由的请求。以下是一个简单的示例:


<?php
namespace My\Module\Controller\Index;
use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;
class Index extends Action
{
    /**
     * @var PageFactory
     */
    protected $resultPageFactory;
    /**
     * Constructor
     *
     * @param Context $context
     * @param PageFactory $resultPageFactory
     */
    public function __construct(Context $context, PageFactory $resultPageFactory)
    {
        parent::__construct($context);
        $this->resultPageFactory = $resultPageFactory;
    }
    /**
     * Execute action based on request and return result
     *
     * @return \Magento\Framework\Controller\ResultInterface
     */
    public function execute()
    {
        $resultPage = $this->resultPageFactory->create();
        $resultPage->getConfig()->getTitle()->set(__('My Page Title'));
        return $resultPage;
    }
}

上面的示例设置了页面标题并返回结果页面。


推荐文章