【问题标题】:CI Route conflictionCI 路由冲突
【发布时间】:2018-03-25 05:46:22
【问题描述】:

我很难弄清楚如何为这种情况制定路线:http://wwww.domain.com/category-slug/product-slug 我认为这很容易,我很快将这一行添加到route.php

$route['([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)'] = "products/show";

但是,这也会在每个页面上重定向我,例如 http://wwww.domain.com/admin/dashboard 等等,但是,我明确希望仅用于我的产品。如何解决这个问题?

【问题讨论】:

    标签: php codeigniter url routes


    【解决方案1】:

    那是因为,第二段中的第一段 admin 和 dashboard 匹配 [a-zA-Z0-9-]+ ,并重新映射到 products 类/控制器和 show 方法/函数。

    如果你可以创建类似的 url

    products/category-slug/product-slug
    

    如果你像下面这样设置路线

    $route['products/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)'] = 'products/show/$1/$2';
    

    【讨论】:

    • 不,我不想在我的路线中使用产品关键字。
    • 路由是按顺序执行的,所以你首先为你的管理控制器设置路由,然后为你的产品设置路由,最简单的方法是创建像上面这样的 URL...否则你如何识别 url 是为产品设计的控制器
    • 你能告诉我如何在route.php中使用数据库查询
    【解决方案2】:

    我认为你需要使用这样的东西

    $route['products/(:any)/(:any)'] = 'Product_controller/product_function/$1/$2'
    

    在你的函数里面你可以有这样的东西

    public function product_function(cat_slug, pro_slug){
         //Some code here
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-15
      • 2018-06-07
      • 2018-05-23
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      相关资源
      最近更新 更多