2013-08-11 35 views
8

Tôi đang cố gắng triển khai trang templating trong ứng dụng codeigniter của mình, templating đang hoạt động tốt, ví dụ, tôi có một trang blog, mà tôi đang cố gắng chỉ định làm trang chủ của mình và phân trang và vân vân. Khi tôi viết www.mywebsite.com/blog, nó được mở trong mẫu trang chủ hoặc giả sử rằng tôi có một trang www.mywebsite.com/about, nó cũng được mở trong mẫu trang. Nhưng khi tôi cố truy cập trang web của mình qua www.mywebsite.com, tôi có trang lỗi 404. Làm thế nào tôi có thể gán trang blog của tôi làm trang chủ?Trang chủ cài đặt Codeigniter (Bộ điều khiển mặc định)

điều khiển Page:

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 } 
} 

trong đường của tôi, tôi đã thiết lập bộ điều khiển mặc định của tôi để điều khiển trang

$route['default_controller'] = "page"; 

Trả lời

0

Vấn đề là không có phân khúc URI khi bạn truy cập www.mywebsite.com. Bạn có thể thử thiết lập các giá trị mặc định như:

$this->uri->segment(1 , 'blog') 
+0

cảm ơn bạn rất nhiều. –

0

Mã của bạn

// 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 đang phân khúc

$this->uri->segment(1) 

đang tìm phân khúc url đầu tiên, khi bạn duyệt qua trang web của bạn như www. yousite.come/blog nó sẽ làm việc tìm thấy nhưng khi bạn làm www.yoursite.com phân đoạn uri đầu tiên là mất tích vì vậy nó sẽ trở lại sai, vì vậy tôi sẽ hiển thị trang 404.

Giải pháp: Bạn chỉ có thể thêm tham số thứ hai đến chức năng như

$this->uri->segment(1,'blog'); 

bây giờ nếu phân khúc url đầu tiên là mất tích nó sẽ không trả về false, nó sẽ trả lại vlaue mặc định 'blog'

Để biết thêm thông tin về vấn đề này bạn có thể nhìn thấy codeingitor documentation

4

application/config/routes.php

$route['default_controller'] = 'namecontroller'; 
+0

anh ta đã xác định rằng '$ route ['default_controller'] =" page ";' –

Các vấn đề liên quan