Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento为单个门店提供多条动态定制路线_Magento_Routes_Magento2_Router_Magento2.2 - Fatal编程技术网

Magento为单个门店提供多条动态定制路线

Magento为单个门店提供多条动态定制路线,magento,routes,magento2,router,magento2.2,Magento,Routes,Magento2,Router,Magento2.2,我想在上加载我的magento存储 www.example.com/var1/var2 而不是www.example.com,我希望我的产品url类似于www.example.com/var1/var2/product-url Var1和var2可以是动态变量。 帮助我重写maganeto 2.2.6中的URL 我尝试过开发一个自定义模块,但现在我要做的就是在自定义模块中加载所有magento模块。似乎我在magento完全按照习惯工作,这不是一个好的做法。通过这种方式,我必须将所有magent

我想在上加载我的magento存储 www.example.com/var1/var2 而不是www.example.com,我希望我的产品url类似于www.example.com/var1/var2/product-url Var1和var2可以是动态变量。 帮助我重写maganeto 2.2.6中的URL


我尝试过开发一个自定义模块,但现在我要做的就是在自定义模块中加载所有magento模块。似乎我在magento完全按照习惯工作,这不是一个好的做法。通过这种方式,我必须将所有magento模块重新初始化为自定义模块。通过这种方式,使用这种方法,magento对我来说毫无用处。

在这种情况下,您可以通过执行以下步骤来使用请求路由:

  • 使用以下内容在供应商/YourModule/etc/di.xml下创建di.xml:
  • 
    供应商\模块\控制器\路由器
    错误的
    70
    

  • 创建实现RouterInterface的Router类,如下所示:

    类路由器实现\Magento\Framework\App\RouterInterface { 私人工厂

    /**
     * Router constructor.
     * @param \Magento\Framework\App\ActionFactory $actionFactory
     */
    
    public function __construct(\Magento\Framework\App\ActionFactory $actionFactory)
    {
        $this->actionFactory = $actionFactory;
    }
    
    public function match(\Magento\Framework\App\RequestInterface $request)
    {
        $info = $request->getPathInfo();
        if (preg_match("%^/(var1/var2)(.*?)$%", $info, $m)) {
            $request->setPathInfo(str_replace('var1/var2', '', $info));
            return $this->actionFactory->create('Magento\Framework\App\Action\Forward',
                ['request' => $request]);
        }
        return null;
    }
    
    }

  • 运行以下命令:

    php-bin/magento-s:up


  • 输入您的url,如www.example.com/var1/var2,然后查看结果

    我将投票结束这个问题,因为堆栈溢出是一个问答网站。你的问题不是关于编程。也许你应该把它贴上去?我已经试过了,它已经起作用了。但它只加载主页。我希望我的所有url,如我的产品hrefs和我的购物车页面链接,都应该转换为www.example.com/var1/var2/my-cart或www.example.com/var1/var2/my-product。我不想更改基本url,因为var1和var2是动态的,我不想为每个使用不同var1/var2var1/var2的用户反复更新数据库基本上,var1是类型,var2是供应商名称,所以两者都可以反复更改