【问题标题】:How to find route of a current page?如何找到当前页面的路线?
【发布时间】:2017-09-27 21:26:07
【问题描述】:

我可以在控制器中使用哪一行代码来确定当前页面的路由吗?

例如,我想查找带有 SEO url https://example.com/desktops 的页面的路由(这应该返回路由 product/category)。

类似地,https://example.com/index.php?route=product/product&path=18&product_id=47 等 url 应该以 product/product 返回路由。

【问题讨论】:

    标签: php opencart


    【解决方案1】:

    说实话,正确答案是$this->request->get['route'];

    为了捕捉当前路线,可以在index()函数的catalog/controller/common/header.php文件中使用$this->request->get['route'];Header.php 几乎是任何前端输出的一部分(据我了解,现在您不确定 http://example.com/desktops 中使用的是什么控制器,因此您需要在任何情况下都可以运行代码的正确位置)。

    SEO 模块不会取消设置请求对象的这一部分。另外,请记住,在 OpenCart 代码生成过程中,$_GET 数组和 $this->request->get 数组不是一回事。当 SEO 模块运行时,您不会在 $_GET 超全局 php 数组中捕获当前路线(以“路径/控制器/操作”格式),但您可以使用为您准备的 $this->request->get 数组使用任何控制器捕获它通过 OpenCart 引擎。

    【讨论】:

      【解决方案2】:

      这是通过在 url_alias 表中查询特定关键字来完成的,以便为您提供标准设置附带的四个 ID 之一(product_idcategory_idinformation_idmanufacturer_id)以及它的 id 值由 = 分隔。

      在您的桌面示例中,它类似于category_id=20。从那里,您需要制定路线

      您可以在文件 /catalog/controller/common/seo_url.php 中找到 OpenCart 执行此操作的确切方式

      【讨论】:

        【解决方案3】:

        编辑:

        在控制器中我们有$this->request->get['route']

        seo_url.php:

        if (isset($this->request->get['product_id'])) {
            $this->request->get['route'] = 'product/product';
        } elseif (isset($this->request->get['path'])) {
            $this->request->get['route'] = 'product/category';
        } elseif (isset($this->request->get['manufacturer_id'])) {
            $this->request->get['route'] = 'product/manufacturer/info';
        } elseif (isset($this->request->get['information_id'])) {
            $this->request->get['route'] = 'information/information';
        }
        

        【讨论】:

        • @Jay Gilford,这是一个错误。我的意思是_route_。我在 var_export($_REQUEST); 中看到了这个键在我的 index.php 中
        • _route_ 会给你他们的关键字,但这仍然没有提供实际路线
        • 在控制器中有 $this->request->get['route'] 包含我们想要的内容。不是吗?
        • 仅当 SEO URL 控制器已经从关键字中找出它时
        • @Jay Gilford,你能举一个没有发生这种情况的例子吗?我想知道我错在哪里
        猜你喜欢
        • 2010-11-15
        • 2015-12-24
        • 2017-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-31
        • 1970-01-01
        相关资源
        最近更新 更多