【问题标题】:How to remove all controller names from url in codeigniter如何从codeigniter中的url中删除所有控制器名称
【发布时间】:2016-03-25 01:22:11
【问题描述】:

我在 Codeigniter 项目中有多个控制器。我需要隐藏这些控制器名称。例如:我有两个控制器,家庭和学校。每所学校都有自己的页面,包括关于、画廊、联系方式等,网址应为http://www.sitename.com/schoolname。我使用 routes.php 隐藏家庭控制器。 $route['(:any)'] = 'home/$1'; 但它在学校控制器中显示错误。请帮帮我.....谢谢。

【问题讨论】:

    标签: php codeigniter codeigniter-2


    【解决方案1】:

    绝对需要控制器名称是不正确的。

    routes.php中首先定义默认控制器为home(当用户访问主页sitename.com时)

    $route['default_controller'] = 'home';
    

    然后你创建任何其他页面应该重定向到school控制器的规则:

    $route['.*'] = 'school';
    

    现在home.php 控制器将如下所示:

    class Home extends CI_Controller {
    
        public function Index()
        {
            echo "This is the homepage";
        }
    
    }
    

    school.php 控制器中,您必须从请求的 URL 中手动获取学校的名称:

    class School extends CI_Controller {
    
        public function _remap()
        {
            echo "User requested school: " . $this->uri->segment(1);
        }
    
    }
    

    为什么要使用_remap 方法?因为无论 URL 或路由中的内容如何,​​每次都会调用它。

    来自the docs

    如果你的控制器包含一个名为 _remap() 的方法,无论你的 URI 包含什么,它都会被调用。

    【讨论】:

      【解决方案2】:

      试试这个

       $route['anything you want/(:any)'] = 'home/$1';
      

      控制器名称是必需的,因此请使用您想要的任何名称来设置它

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-04
        • 2018-01-10
        • 1970-01-01
        • 2011-11-28
        • 1970-01-01
        • 2016-11-02
        • 1970-01-01
        • 2013-09-08
        相关资源
        最近更新 更多