【问题标题】:CodeIgniter routing rules help needed, CI version 2.0需要 CodeIgniter 路由规则帮助,CI 版本 2.0
【发布时间】:2012-01-10 13:02:50
【问题描述】:

我想要以下行为:

  1. http://www.example.com/ 应转至:http://example.com/welcome

    (通过在 routes.php 中设置 default_controller 完成)

  2. http://www.example.com/controllerName/functionName应该去 控制器名称,然后是它的函数 IF THE CONTROLLER EXISTS。
  3. 如果controllerName 不存在,它应该转到: specialController 和 specialFunction 与 functionaName 为 参数

例如。 http://www.example.com/greatProducts 应该变成 http://www.example.com/specialController/specialFunction/greatProducts 如果greatProducts 控制器不存在,(它可以是任何字符串,而不仅仅是greatProduct,大小写相同,即具有该名称的控制器不存在)

希望最好使用路由规则来实现这一点, 通过编辑库来更改 URI 段对我来说似乎不是一个好选择。

这行得通:

我通过在 core/Routes.php 中编辑 Routes.php 并添加类似的内容进行了尝试

`$segments = array("specialController","specialFunction",$segments[0]);
        return $segments;`

如果发现控制器不存在。

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    试试这个(尚未测试但应该可以):

     $route['greatPtroduct/(:any)'] = "specialController/specialFunction/$1";
    

    控制器:

    class specialController extends CI_Controller {
    
      function specialFunction($method)
      {
         if(method_exists($this,$method))
         {
           $this->$method;
         }
         else
         {
          show_404;
         }
      }
    

    更新:

    这更棘手。像

    这样的路线
    $route['(:any)/(:any)'] = "specialController/specialFunction/$1";
    

    会起作用,但它会捕获任何控制器,因此如果您的应用中有其他控制器,则需要将它们列入白名单以避免被此捕获。例如:

    $route['contact'] = "contact";
    $route['about'] = "about";
    // and so on
    $route['(:any)/(:any)'] = "specialController/specialFunction/$1";
    

    【讨论】:

    • 您好,感谢您的帮助。这似乎很接近。但是这里的控制器 greatProduct ,也可以是其他任何东西。它可以是任何字符串,例如anotherProdcut,cheapProduct,并且此控制器不存在,这就是需要路由规则的原因。
    • @DhruvPathak 我更新了我的答案;我现在得到了吗?否则请你更清楚你的意图,因为我不明白编辑:现在明白了,给我一些时间考虑一下
    • 问题的第 3 点有一个小修改,看看。我还提到了使它工作的调整,但这是基于库编辑,而不是路由配置。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    相关资源
    最近更新 更多