2015-12-15 3 views
0

Я работал над проектом Igniter, и я почти готов. Я, наконец, добавил Pagination, но имею одну проблему. Когда я просматриваю свои ссылки на странице и нажимаю, чтобы перейти на мою домашнюю страницу, я получаю сообщение об ошибке. Пытаясь сломать это вниз так, чтобы другие могли лучше понять это, моя страница блога, который имеет нумерацию страниц имеет этот URL:вопрос маршрута в проекте CodeIgniter

proj1/index.php/блог

мой URL для домашней странице:

proj1/index.php/дома

, когда я нажимаю на моей постраничной ссылку на "2", который показывает следующий набор блогов, я к этому URL:

proj1/index.php/блог/2

Теперь, если я на блоге/2, а затем нажмите кнопку «домой» он принимает меня здесь:

proj1/index.php/блог/дома

если я иду на моей странице резюме я вижу это:

proj1/index.php/блог/работа

в принципе, я не вернусь к моей домашней странице, ни моей странице резюме. Кто-нибудь может помочь решить эту проблему? Спасибо за помощь!!

Вот что мой контроллер блог выглядит следующим образом:

<?php 
    defined('BASEPATH') OR exit('No direct script access allowed'); 

    class Blog extends CI_Controller { 

    //This function begins to construct the controller. 
    public function __construct() 

     { 
     parent::__construct(); 
     $this->load->model('Blog_model'); 
     $this->load->helper('url_helper'); 
     //pagination being loaded from the library 
     $this->load->library('pagination'); 
     } 

    public function index() 

    { 
     //This line sets the page for the base URL 
     $config['base_url'] = base_url('index.php/blog'); 
     $config['total_rows'] = $this->Blog_model->count_items(); 
     $config['per_page'] = 2; 
     $this->pagination->initialize($config); 

     $data['title'] = 'Blog archive'; 


     $data['pagination'] = $this->pagination->create_links(); 
     $start = ''; 

     $slug = ''; 

     $data['blog'] = $this->Blog_model->get_items($config['per_page'],       jjjj  $this->uri->segment(2)); 

     $this->load->view('templates/header', $data); 
     $this->load->view('blog/index', $data); 
     $this->load->view('templates/footer'); 
    } 

    public function view($slug = NULL) 

    { 

     $data['blog_item'] = $this->Blog_model->get_blog($slug); 

     if (empty($data['blog_item'])) 
     { 
      show_404(); 
     } 

     $data['title'] = $data['blog_item']['title']; 

     $this->load->view('templates/header', $data); 
     $this->load->view('blog/view', $data); 
     $this->load->view('templates/footer'); 

    } 

    public function create() 

    { 
     $this->load->helper('form'); 
     $this->load->library('form_validation'); 

     $data['title'] = 'Create a Blog Entry'; 

     $this->form_validation->set_rules('title', 'Title', 'required'); 
     $this->form_validation->set_rules('body', 'Body', 'required'); 

     if ($this->form_validation->run() === FALSE) 

     { 
      $this->load->view('templates/header', $data); 
      $this->load->view('blog/create'); 
      $this->load->view('templates/footer'); 

     } 
     else 

     { 
      $this->Blog_model->set_blog(); 
      redirect('blog'); 
     } 
    } 
    } 

Вот мой блог модель:

<?php 
    class Blog_model extends CI_Model { 

    //This function connects to the database and loads it. 
    public function __construct() 

    { 
    parent::__construct(); 
    $this->load->database(); 
    } 

    //This function counts all of the items in the blog table. 
    public function count_items() 

    { 
    return $this->db->count_all('blog'); 
    } 

     //function pulls items out of the array specifically by newest date      first. 
    function get_items($limit, $offset) 

    { 
    $data = array(); 
    $this->db->limit($limit, $offset); 
    $this->db->order_by('entry_date', 'desc'); 
    $query = $this->db->get('blog'); 
    if ($query->num_rows() > 0){ 
    foreach ($query->result_array() as $row){ 
    $data[] = $row; 
    } 
    } 
    $query->free_result(); 
    return $data; 
    } 

    public function set_blog() 

    { 
    $this->load->helper('url'); 

    $slug = url_title($this->input->post('title'), 'dash', TRUE); 

    $data = array(
    'title' => $this->input->post('title'), 
    'slug' => $slug, 
    'body' => $this->input->post('body') 
); 

    return $this->db->insert('blog', $data); 
    } 
    } 

Наконец, мои маршруты выглядеть следующим образом:

$route['message'] = 'contact/create'; 
$route['contact'] = 'contact'; 
$route['blog/(:any)'] = 'blog/index/$1'; 
$route['create'] = 'blog/create'; 
$route['blog'] = 'blog'; 
$route['(:any)'] = 'pages/view/$1'; 
$route['default_controller'] = 'pages/view'; 

Спасибо за любую помощь, и, пожалуйста, дайте мне знать, если вы хотите, чтобы я опубликовал дополнительную информацию. Я не думаю, что это трудно решить. Однако, это меня насторожило! Еще раз спасибо за помощь!

+0

Вы определили $ config ['base_url'] = base_url ('index.php/blog'); который устанавливает base_url –

+0

Могу ли я узнать, какой фрагмент кода вы используете для ссылки на домашнюю страницу –

+0

Я действительно считаю, что проблема может быть в переменной $ config, но как ее исправить? Что вы подразумеваете под «фрагментом кода для ссылки на домашнюю страницу»? Я использую это: index.php/home - это то, что вы имеете в виду? –

ответ

0

Как уже упоминалось в комментариях, вы должны изменить

$config['base_url'] = base_url('index.php/blog'); 

в

$config['base_url'] = base_url('index.php/home'); 

Я хотел бы изменить индексного метода в контроллере для страницы и чем изменения конфигурации base_url на:

$config['base_url'] = base_url('index.php/blog/page/'); 

Вы можете изменить маршрут:

$route['blog'] = 'blog/page/1'; 

Чем вы можете удалить следующий маршрут, так как он больше не является необходимым:

$route['blog/(:any)'] = 'blog/index/$1'; 

Чем это все должно работать.

Редактировать: Я считаю, что 404 - это потому, что класс pagination проверял неправильный сегмент URL.Mayby также может помочь (попробуйте разные значения).

$config['uri_segment'] = 2; 
+0

Добрый день, спасибо за информацию. Я внес следующие изменения: $ config ['base_url'] = base_url ('index.php/blog/page /'); и маршруты, которые у меня теперь есть: $ route ['blog'] = 'blog/page/1'; Тем не менее, он все еще не работает, я получаю сообщение об ошибке 404 всякий раз, когда я пытаюсь перейти на мою страницу блога. Похоже, что маршрут: $ route ['blog'] = 'blog'; необходим! Спасибо за помощь! –

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