📜  magento 2 路由瓮 (1)

📅  最后修改于: 2023-12-03 15:02:50.297000             🧑  作者: Mango

Magento 2 路由瓮

Magento 2使用路由瓮来管理URL和控制器之间的关系。路由瓮将URL请求映射到适当的控制器,并在请求中提供附加参数。这使得Magento 2成为一个灵活的平台,可以自定义URL。

路由瓮的结构
  • Type:该字段协定了路由瓮的类型。默认值为'frontend',还可以使用adminhtml和其他自定义的路由类型。
  • FrontName:定义前端控制器的基本路径。例如,若FrontName的名为'catalog',则可以通过http://www.example.com/catalog访问catalog前端控制器。
  • Identities:定义当前路由的标识符,以便Magento可以跟踪当前请求。
  • Actions:内含前端控制器及方法的定义。
创建路由瓮

创建自定义路由瓮的步骤:

  1. 创建模块,模块目录为Magento/app/code/Vendor/Module。
  2. 在模块的etc目录下定义一个文件,文件名为routes.xml。
  3. 在routes.xml文件中定义路由瓮。

routes.xml示例:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="custom_router">
        <route id="custom" frontName="custom">
            <module name="Vendor_Module" />
        </route>
    </router>
</config>
定义前端控制器

定义前端控制器的步骤:

  1. 在Vendor/Module/Controller目录下创建一个控制器文件。
  2. 在控制器文件中定义所需的操作。

注:控制器文件必须保存在Magento\Vendor\Module\Controller目录下。

控制器示例:

<?php
namespace Vendor\Module\Controller\Index;
class Example extends \Magento\Framework\App\Action\Action
{
    protected $resultPageFactory;
    public function __construct(\Magento\Framework\App\Action\Context $context, \Magento\Framework\View\Result\PageFactory $resultPageFactory)
    {
        $this->resultPageFactory = $resultPageFactory;
        parent::__construct($context);
    }
    public function execute()
    {
        return $this->resultPageFactory->create();
    }
}
在模板中使用路由瓮

在模板中使用路由瓮来生成链接的步骤:

  1. 获取路由器实例。
  2. 使用路由器实例创建URL。

注:如果我们需要添加附加参数,则可以使用setParams方法。

示例:

$url = $this->_url->getUrl('custom/index/example', ['id' => 4]);
总结

路由瓮是Magento2中重要的概念之一,它可以让我们轻松创建自定义链接,并将URL映射到适当的控制器。本文介绍了路由瓮的结构、创建和定义前端控制器的过程,希望对Magento2开发者有所帮助。