2013-02-13 3 views
0

Привет, ребята, я пытаюсь создать блог. Первая страница нормально .. я получаю описание шрота и категорию из базы данных, но ... У меня есть проблемы с ссылками:CodeIgniter Просмотреть блог Сообщение Страница

это мои контроллеры функция:

public function index() 
    { 
     $this->load->model('Model_cats'); 
     $data['posts'] = $this->Model_cats->getLivePosts(10); 
     $data['cats'] = $this->Model_cats->getTopCategories(); 
     $data['title'] = 'Welcome to Paul Harbuz Blog Spot!'; 
     $data['main'] = 'public_home'; 
     $this->load->vars($data); 
     $this->load->view('template', $data); 
    } 

    public function category($id) 
    { 
     $data['category'] = $this->Model_cats->getCategory($id); 
     $data['posts'] = $this->Model_cats->getAllPostsByCategory($id); 
     $data['cats'] = $this->Model_cats->getTopCategories(); 
     $data['title'] = $data['category']['name']; 
     $data['main'] = 'public_home'; 
     $this->load->vars($data); 
     $this->load->view('template', $data); 
    } 
    public function post($id) 
    { 
     $data['post'] = $this->Model_cats->getPost($id); 
     $data['comments'] = $this->Model_cats->getComments($id); 
     $data['cats'] = $this->Model_cats->getTopCategories(); 
     $data['title'] = $data['post']['title']; 
     $data['main'] = 'public_post'; 
     $this->load->vars($data); 
     $this->load->view('template'); 
    } 

этого является моя модель функция:

function getTopCategories() 
    { 
     $this->db->where('parentid',0); 
     $query = $this->db->get('categories'); 
     $data = array(); 

     if ($query->num_rows() > 0) 
     { 
      foreach ($query->result_array() as $row) 
      { 
       $data[$row['id']] = $row['name']; 
      } 
     } 

     $query->free_result(); 
     return $data; 
    } 

    function getLivePosts($limit) 
    { 
     $data = array(); 

     $this->db->limit($limit); 
     $this->db->where('status', 'published'); 
     $this->db->order_by('pubdate', 'desc'); 
     $query = $this->db->get('posts'); 

     if($query->num_rows() > 0) 
     { 
      foreach($query->result_array() as $row) 
      { 
       $data[] = $row; 
      } 
     } 

     $query->free_result(); 
     return $data; 
    } 

    function getCategory($id) 
    { 
     $data = array(); 
     $this->db->where('id',$id); 
     $this->db->limit(1); 
     $query = $this->db->get('categories'); 

     if($query->num_rows() > 0) 
     { 
      $data = $query->row_array(); 
     } 

     $query->free_result(); 
     return $data; 
    } 

    function getAllPostsByCategory($catid) 
    { 
     $data = array(); 
     $this->db->where('category_id', $catid); 
     $this->db->where('status', 'published'); 
     $query = $this->db->get('posts'); 

     if($query->num_rows() > 0) 
     { 
      foreach($query->result_array() as $row){ 
       $data[] = $row; 
      } 
     } 
     $query->free_result(); 
     return $data; 
    } 

    function getPost($id) 
    { 
     $data = array(); 
     $this->db->where('id',$id); 
     $this->db->limit(1); 
     $query = $this->db->get('posts'); 

     if ($query->num_rows() > 0) 
     { 
      $data = $query->row_array(); 
     } 

     $query->free_result(); 
     return $data; 
    } 

и на странице просмотра у меня есть что-то вроде этого:

if (count($posts)) 
    { 
     foreach ($posts as $key => $list) 
     { 
     echo '<h2>'.$list['title'].'</h2>'; 
     echo auto_typography(word_limiter($list['body'], 200)); 
     echo anchor('post/'.$list['id'],'read more >>'); 
     } 

     echo '<br/><br/>'; 
    } 

Я получаю идентификатор сообщения в URL-адресе, но .. я не знаю, почему страница не найдена.

ответ

3

Вы должны добавить имя контроллера в сегменты uri якоря.

echo anchor('CONTROLLER/post/'.$list['id'],'read more >>'); 

Больше на эту тему в CodeIgniter URLs documentation.

Если вы хотите URL, как http://example.com/post/123 то вы должны добавить следующие строки в ваш файл application/config/routes.php:

$route['post/(:num)'] = "CONTROLLER/post/$1"; 

Подробнее о маршрутизации также доступна в documentation.

+0

Я думаю, что это сообщение для меня ... так что я сделал это: - ?? или нет .. – emcee22

+0

№ Пост - это ваша функция. Имя вашего контроллера - это имя класса, в котором находится функция 'post'. –

+0

Спасибо большое! помогите мне много. @Marvin Rabe – emcee22

Смежные вопросы