0

我想知道在codeigniter中路由到页面的最佳方式是什么?例如,用户想要路由到索引页面,但我应该在控制器中创建一个仅用于该页面的方法,还是更好的方法?

4

3 回答 3

3

无需创建单独的方法或控制器。这是我的做法:

class Pages extends CI_Controller {

    function _remap($method)
    {
        is_file(APPPATH.'views/pages/'.$method.'.php') OR show_404();
        $this->load->view("pages/$method");
    }

}

所以 urlhttp://example.com/pages/about会加载视图文件application/views/pages/about.php。如果文件不存在,则显示 404。

您不需要任何特殊的路由来执行此操作,但如果您希望 URL 改为,您可以执行以下操作http://example.com/about

// Route the "about" page
$route['about'] = "pages/$1";

// Route ALL requests to the static page handler
$route['(:any)'] = "pages/$1";
于 2012-07-24T18:11:30.130 回答
1

可以使用该application/config/routes.php文件完成路由。您可以在那里定义重定向到索引页面的自定义路由。绝对不需要为每个页面创建方法。

更详细的解释可以在这里找到:http ://codeigniter.com/user_guide/general/routing.html

编辑:没有真正明白你的意思,但这是我使用的解决方案:

class Static_pages extends CI_Controller {

    public function show_page($page = 'index')
    {
        if ( ! file_exists('application/views/static_pages/'.$page.'.php'))
            show_404();

        $this->load->view('templates/header');
        $this->load->view('static_pages/'.$page);
        $this->load->view('templates/footer');
    }

}

我为静态页面制作了 1 个控制器,application/controllers其中包含 1 个用于加载静态页面的方法。

然后我将此行添加到application/config/routes.php

$route['(:any)'] = 'static_pages/show_page/$1';
//you can also change the default_controller to show this static page controller
$route['default_controller'] = 'static_pages/show_page';
于 2012-07-24T17:48:58.983 回答
0

在位于的配置文件中/application/config/routes.php

于 2012-07-24T17:47:26.150 回答