我正在尝试在我的codeigniter应用程序中实现页面模板,模板工作正常,例如,我有一个博客页面,我试图指定为我的主页,具有不同的视图和分页等等。当我写www.mywebsite.com/blog时,它会在主页模板中打开,或者假设我有一个页面www.mywebsite.com/about,它也会在页面模板中打开。但是当我尝试通过www.mywebsite.com访问我的网站时,我有一个404错误页面。如何将我的博客页面指定为主页?
页面控制器:
class Page extends Frontend_Controller {
public function __construct(){
parent::__construct();
$this->load->model('page_m');
}
public function index() {
// Fetch the page template
$this->data['page'] = $this->page_m->get_by(array('slug' => (string) $this->uri->segment(1)), TRUE);
count($this->data['page']) || show_404(current_url());
add_meta_title($this->data['page']->title);
add_meta_keyword($this->data['page']->keywords);
add_meta_description($this->data['page']->description);
// Fetch the page data
$method = '_' . $this->data['page']->template;
if (method_exists($this, $method)) {
$this->$method();
}
else {
log_message('error', 'Could not load template ' . $method .' in file ' . __FILE__ . ' at line ' . __LINE__);
}
// Load the view
$this->data['subview'] = $this->data['page']->template;
$this->load->view('_main_layout', $this->data);
}
private function _page(){ // methods }
private function _homepage(){ // methods }
}
在我的路线中,我已将默认控制器设置为页面控制器
$route['default_controller'] = "page";
答案 0 :(得分:8)
应用/配置/ routes.php文件
$route['default_controller'] = 'namecontroller';
答案 1 :(得分:0)
问题是,当您访问www.mywebsite.com
时,没有URI细分。您可以尝试将默认值设置为:
$this->uri->segment(1 , 'blog')
答案 2 :(得分:0)
您的代码
// Fetch the page template
$this->data['page'] = $this->page_m->get_by(array('slug' => (string) $this->uri->segment(1)), TRUE);
count($this->data['page']) || show_404(current_url());
uri段代码
$this->uri->segment(1)
正在寻找第一个网址片段,当你浏览网站时,如www.yousite.come / blog它会工作查找,但是当你做www.yoursite.com时,第一个uri片段丢失,所以它会返回false,所以我会显示404页。
解决方案: 您可以将第二个参数添加到函数中,如
$this->uri->segment(1,'blog');
现在如果第一个url段丢失,它将不会返回false,它将返回默认值'blog'
有关此内容的详细信息,请参阅codeingitor documentation