Освоение маршрутизации Magento 2: полное руководство по управлению URL-адресами

В мире электронной коммерции Magento 2 стала одной из самых мощных и популярных платформ. Он предлагает надежную систему маршрутизации, которая позволяет эффективно управлять URL-адресами. В этой статье мы углубимся в различные методы управления маршрутизацией, доступные в Magento 2, с примерами кода и понятными объяснениями. Итак, начнём!

  1. Действия контроллера.
    Одним из основных методов маршрутизации в Magento 2 являются действия контроллера. Контроллер отвечает за обработку определенного URL-адреса и выполнение необходимой логики. Вот пример простого действия контроллера:
<?php
namespace Vendor\Module\Controller\Index;
class Index extends \Magento\Framework\App\Action\Action
{
    public function execute()
    {
        echo "Hello, Magento 2 Routing!";
    }
}
  1. Пользовательские маршруты.
    Magento 2 позволяет определять собственные маршруты для обработки определенных URL-адресов. Это дает вам большую гибкость в управлении URL-адресами вашего магазина. Вот пример создания собственного маршрута:
<router id="standard">
    <route id="customroute" frontName="customroute">
        <module name="Vendor_Module" />
    </route>
</router>
  1. Переписывание URL-адресов.
    Переписывание URL-адресов позволяет создавать удобные для поисковых систем URL-адреса для вашего магазина Magento 2. Вы можете сопоставить удобный URL-адрес с существующим URL-адресом, используя функцию перезаписи URL-адресов. Вот пример программного перезаписи URL:
<?php
use Magento\UrlRewrite\Model\UrlRewriteFactory;
class CustomRewrite
{
    protected $urlRewriteFactory;
    public function __construct(UrlRewriteFactory $urlRewriteFactory)
    {
        $this->urlRewriteFactory = $urlRewriteFactory;
    }
    public function createRewrite()
    {
        $urlRewrite = $this->urlRewriteFactory->create();
        $urlRewrite->setEntityType('custom_entity_type')
            ->setEntityId(1)
            ->setRequestPath('custom-url')
            ->setTargetPath('target-url')
            ->setRedirectType(0)
            ->setStoreId(1)
            ->save();
    }
}
  1. Параметры маршрута.
    Magento 2 позволяет вам определять параметры маршрута в ваших URL-адресах. Эти параметры можно использовать для передачи динамических значений вашим контроллерам. Вот пример определения маршрута с параметрами:
<router id="standard">
    <route id="customroute" frontName="customroute">
        <module name="Vendor_Module" />
        <route id="myroute" frontName="myroute">
            <module name="Vendor_Module" />
            <action name="index">
                <param name="id">[0-9]+</param>
            </action>
        </route>
    </route>
</router>