我想知道在codeigniter中路由到页面的最佳方式是什么?例如,用户想要路由到索引页面,但我应该在控制器中创建一个仅用于该页面的方法,还是更好的方法?
问问题
6128 次
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 回答