Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
CodeIgniter中的动态控制器_Codeigniter - Fatal编程技术网

CodeIgniter中的动态控制器

CodeIgniter中的动态控制器,codeigniter,Codeigniter,我正在创建一个新网站,从数据库中加载所有主类别和子类别。我也测试了导航,也就是说,如果我单击任何主类别,它会完美地加载所有相应的子类别,而不会出现任何问题。然而,目前,我是通过在URL中传递查询字符串来实现这一点的。比如说 http://localhost/MyController?id=32145 让我们假设id 32145表示一个主类别,即“关于我们””。我的问题是如何将上述URL更改为以下内容: http://localhost/Aboutus 如果在“关于我们”的下有任何子类别,则应

我正在创建一个新网站,从数据库中加载所有主类别和子类别。我也测试了导航,也就是说,如果我单击任何主类别,它会完美地加载所有相应的子类别,而不会出现任何问题。然而,目前,我是通过在URL中传递查询字符串来实现这一点的。比如说

http://localhost/MyController?id=32145
让我们假设id 32145表示一个主类别,即“关于我们””。我的问题是如何将上述URL更改为以下内容:

http://localhost/Aboutus
如果在“关于我们”的下有任何子类别,则应显示为:

http://localhost/Aboutus/Mission

请帮我解决这个问题。

默认情况下,CodeIgniter使用基于段的方法,您可以像问题的第二部分一样进行URL路由—“如果有任何子类别在About us下”

详情如下:


但是,如果您想重写完整的URL,则可能需要检查。htaccess rewriting

这并不容易,请执行一次迁移

  • 在数据库中,您可以存储产品的新控制器/url(如果还没有)
  • 创建新控制器
  • 将旧Url重定向到新Url的路由控制器 控制器
  • 将旧URL路由到路由控制器
  • 路由控制器类似于以下内容:

        public function old_url($aProdId) {
            if (is_null($aProdId)) {
                // error cannot be null
            }
    
            $NewUrl = $this->new_url_model->getNewUrl($aProdId);
    
            if (!$NewUrl) {
                // error new url not exist
                return;
            }
            redirect(base_url($NewUrl), 'refresh');
        }
    

    如果我需要动态地创建路径$route['product/(:any)”,比如说$route['db_value/(:any')。那该怎么办呢?
        public function old_url($aProdId) {
            if (is_null($aProdId)) {
                // error cannot be null
            }
    
            $NewUrl = $this->new_url_model->getNewUrl($aProdId);
    
            if (!$NewUrl) {
                // error new url not exist
                return;
            }
            redirect(base_url($NewUrl), 'refresh');
        }