2014-10-31 172 views
0

我剛剛開始使用codeigniter,現在正在處理我的小型項目的管理控制。我有客戶信息列表。 Client List404頁未找到codeigniter中的錯誤?

當我查看&編輯按鈕,點擊它給我的404錯誤 error page

我已經在應用/配置/ routes.php文件

$route['admin/clients'] = 'admin_clients/index'; 
    $route['admin/clients/add'] = 'admin_clients/add'; 
    $route['admin/clients/update'] = 'admin_clients/update'; 
    $route['admin/clients/update/(:any)'] = 'admin_clients/update/$1'; 
    $route['admin/clients/delete/(:any)'] = 'admin_clients/delete/$1'; 
    $route['admin/clients/(:any)'] = 'admin_clients/index/$1'; //$1 = page number 

代碼配置的路徑重定向到編輯頁面

<td class="crud-actions"> 
        <a href="'.site_url("admin").'/clients/update/'.$row['id'].'" class="btn btn-info">view & edit</a> 
        <a href="'.site_url("admin").'/clients/delete/'.$row['id'].'" class="btn btn-danger">delete</a> 
       </td> 

即使刪除不起作用給我同樣的錯誤。 這裏是我的.htaccess代碼

RewriteEngine on 
RewriteBase /testing_palace/ 
RewriteCond $1 !^(index\.php|resources|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

這裏是我的控制器文件

<?php 

class Admin_clients extends CI_Controller { 

    /** 
    * name of the folder responsible for the views 
    * which are manipulated by this controller 
    * @constant string 
    */ 
    const VIEW_FOLDER = 'admin/clients'; 

    /** 
    * Responsable for auto load the model 
    * @return void 
    */ 
    public function __construct() { 
     parent::__construct(); 
     $this->load->model('admin_client_model'); 
     if (!$this->session->userdata('is_logged_in')) { 
      redirect('admin/login'); 
     } 
    } 

    /** 
    * Load the main view with all the current model model's data. 
    * @return void 
    */ 
    public function index() { 

     //all the posts sent by the view 
     $search_string = $this->input->post('search_string'); 
     $order = $this->input->post('order'); 
     $order_type = $this->input->post('order_type'); 

     //pagination settings 
     $config['per_page'] = 5; 

     $config['base_url'] = base_url() . 'admin/clients'; 
     $config['use_page_numbers'] = TRUE; 
     $config['num_links'] = 20; 
     $config['full_tag_open'] = '<ul>'; 
     $config['full_tag_close'] = '</ul>'; 
     $config['num_tag_open'] = '<li>'; 
     $config['num_tag_close'] = '</li>'; 
     $config['cur_tag_open'] = '<li class="active"><a>'; 
     $config['cur_tag_close'] = '</a></li>'; 

     //limit end 
     $page = $this->uri->segment(3); 

     //math to get the initial record to be select in the database 
     $limit_end = ($page * $config['per_page']) - $config['per_page']; 
     if ($limit_end < 0) { 
      $limit_end = 0; 
     } 

     //if order type was changed 
     if ($order_type) { 
      $filter_session_data['order_type'] = $order_type; 
     } else { 
      //we have something stored in the session? 
      if ($this->session->userdata('order_type')) { 
       $order_type = $this->session->userdata('order_type'); 
      } else { 
       //if we have nothing inside session, so it's the default "Asc" 
       $order_type = 'Asc'; 
      } 
     } 
     //make the data type var avaible to our view 
     $data['order_type_selected'] = $order_type; 


     //we must avoid a page reload with the previous session data 
     //if any filter post was sent, then it's the first time we load the content 
     //in this case we clean the session filter data 
     //if any filter post was sent but we are in some page, we must load the session data 
     //filtered && || paginated 
     if ($search_string !== false && $order !== false || $this->uri->segment(3) == true) { 

      /* 
       The comments here are the same for line 79 until 99 

       if post is not null, we store it in session data array 
       if is null, we use the session data already stored 
       we save order into the the var to load the view with the param already selected 
      */ 
      if ($search_string) { 
       $filter_session_data['search_string_selected'] = $search_string; 
      } else { 
       $search_string = $this->session->userdata('search_string_selected'); 
      } 
      $data['search_string_selected'] = $search_string; 

      if ($order) { 
       $filter_session_data['order'] = $order; 
      } else { 
       $order = $this->session->userdata('order'); 
      } 
      $data['order'] = $order; 

      //save session data into the session 
      if (isset($filter_session_data)) { 
       $this->session->set_userdata($filter_session_data); 
      } 

      //fetch sql data into arrays 
      $data['count_products'] = $this->admin_client_model->count_clients($search_string, $order); 
      $config['total_rows'] = $data['count_products']; 

      //fetch sql data into arrays 
      if ($search_string) { 
       if ($order) { 
        $data['manufacturers'] = $this->admin_client_model->get_clients($search_string, $order, $order_type, $config['per_page'], $limit_end); 
       } else { 
        $data['manufacturers'] = $this->admin_client_model->get_clients($search_string, '', $order_type, $config['per_page'], $limit_end); 
       } 
      } else { 
       if ($order) { 
        $data['manufacturers'] = $this->admin_client_model->get_clients('', $order, $order_type, $config['per_page'], $limit_end); 
       } else { 
        $data['manufacturers'] = $this->admin_client_model->get_clients('', '', $order_type, $config['per_page'], $limit_end); 
       } 
      } 
     } else { 

      //clean filter data inside section 
      $filter_session_data['manufacture_selected'] = null; 
      $filter_session_data['search_string_selected'] = null; 
      $filter_session_data['order'] = null; 
      $filter_session_data['order_type'] = null; 
      $this->session->set_userdata($filter_session_data); 

      //pre selected options 
      $data['search_string_selected'] = ''; 
      $data['order'] = 'id'; 

      //fetch sql data into arrays 
      $data['count_products'] = $this->admin_client_model->count_clients(); 
      $data['manufacturers'] = $this->admin_client_model->get_clients('', '', $order_type, $config['per_page'], $limit_end); 
      $config['total_rows'] = $data['count_products']; 
     }//!isset($search_string) && !isset($order) 
     //initializate the panination helper 
     $this->pagination->initialize($config); 

     //load the view 
     $data['main_content'] = 'admin/clients/list'; 
     $this->load->view('templates/template', $data); 
    } 

//index 

    public function add() { 
     //if save button was clicked, get the data sent via post 
     if ($this->input->server('REQUEST_METHOD') === 'POST') { 


     $config['upload_path'] ='public/images/'; 
     $config['allowed_types'] = 'gif|jpg|png|jpeg'; 
     $config['max_size'] = '100'; 
     $config['max_width'] = '1024'; 
     $config['max_height'] = '768'; 

     $this->load->library('upload', $config); 
     $this->upload->initialize($config); 
     //$this->upload->initialize($config); 
     $this->load->library('form_validation'); 

      //form validation 
      $this->form_validation->set_rules('client_name', 'client_name', 'required'); 
      $clientLogo='image'; 
      $this->form_validation->set_error_delimiters('<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a><strong>', '</strong></div>'); 


      //if the form has passed through the validation 
      if ($this->form_validation->run()) { 

       if (!$this->upload->do_upload($clientLogo)) { 
        $error = array('error' => $this->upload->display_errors('<p>', '</p>')); 
        print_r($error); 
       }else { 
        //$data = array('upload_data' => $this->upload->data()); 
        //print_r($data); 
        $uploadedImg=$this->upload->data(); 
        $data_to_store = array(
         'client_name' => $this->input->post('client_name'), 
         'client_logo'=> $uploadedImg['client_name'] 
        ); 
       } 
       //if the insert has returned true then we show the flash message 
       if ($this->admin_client_model->store_clients($data_to_store)) { 
        $data['flash_message'] = TRUE; 
       } else { 
        $data['flash_message'] = FALSE; 
       } 
      } 
     } 
     //load the view 
     $data['main_content'] = 'admin/clients/add'; 
     $this->load->view('templates/template', $data); 
    } 

    /** 
    * Update item by his id 
    * @return void 
    */ 
    public function update() { 
     //product id 
     $id = $this->uri->segment(4); 

     //if save button was clicked, get the data sent via post 
     if ($this->input->server('REQUEST_METHOD') === 'POST') { 
      //form validation 
      $this->form_validation->set_rules('client_name', 'client_name', 'required'); 
      if (empty($_FILES['clientLogo']['name'])){ 
       $this->form_validation->set_rules('clientLogo', 'Client Logo', 'required'); 
      } 
      $this->form_validation->set_error_delimiters('<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a><strong>', '</strong></div>'); 
      //if the form has passed through the validation 
      if ($this->form_validation->run()) { 

       $data_to_store = array(
        'client_name' => $this->input->post('client_name'), 
        'client_logo'=>self::do_upload($_FILES['clientLogo']['name']) 
       ); 
       //if the insert has returned true then we show the flash message 
       if ($this->admin_client_model->update_clients($id, $data_to_store) == TRUE) { 
        $this->session->set_flashdata('flash_message', 'updated'); 
       } else { 
        $this->session->set_flashdata('flash_message', 'not_updated'); 
       } 
       redirect('admin/clients/update/' . $id . ''); 
      }//validation run 
     } 

     //if we are updating, and the data did not pass trough the validation 
     //the code below wel reload the current data 
     //product data 
     $data['manufacture'] = $this->admin_client_model->get_client_by_id($id); 
     //load the view 
     $data['main_content'] = 'admin/clients/edit'; 
     $this->load->view('templates/template', $data); 
    } 

//update 

    /** 
    * Delete product by his id 
    * @return void 
    */ 
    public function delete() { 
     //product id 
     $id = $this->uri->segment(4); 
     $this->admin_client_model->delete_clients($id); 
     redirect('admin/clients'); 
    } 

//edit 


} 

請幫我解決這個問題,反應可以理解的。 謝謝

+0

您是否已通過退出檢查控制器??還有,您是否已加載視圖文件? – Gautam3164 2014-10-31 05:33:33

+0

也請粘貼控制器文件也 – Gautam3164 2014-10-31 05:34:55

+0

請檢查我已粘貼控制器文件。 – 2014-10-31 05:56:34

回答

0

使用下面的.htaccess:

RewriteEngine on 
RewriteCond $1 !^(index\.php|resources|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$index.php/$1 [L,QSA] 
+0

當我嘗試你的代碼並加載主頁在URL沒有(index.php)它給我沒找到錯誤。 – 2014-10-31 06:06:52

+0

您是否在服務器中啓用了mod_rewrite? – 2014-10-31 06:09:39

+0

是,下面的代碼爲我工作了類似像yours.RewriteEngine上 RewriteBase/testing_palace/ 的RewriteCond $ 1→(索引\ .PHP |資源|機器人\ .TXT)! 的RewriteCond%{} REQUEST_FILENAME -f RewriteCond%{REQUEST_FILENAME}!-d RewriteRule ^(。*)$ index.php/$ 1 [L,QSA] – 2014-10-31 06:11:26

0

@Noor Fathima

請更改路由條件

$route['admin/clients/update/(:any)'] = 'admin_clients/update/$1'; $route['admin/clients/delete/(:any)'] = 'admin_clients/delete/$1'; $route['admin/clients/update'] = 'admin_clients/update'; $route['admin/clients/add'] = 'admin_clients/add'; $route['admin/clients/(:any)'] = 'admin_clients/index/$1'; //$1 = page number $route['admin/clients'] = 'admin_clients/index';

+0

對不起它不工作,但仍然讓我同樣的錯誤 – 2014-10-31 07:20:30

+0

OK,檢查config.php文件和 '$配置[ 'uri_protocol'] = \t 'AUTO' 的值更改;' 到 '$配置['uri_protocol'] \t ='REQUEST_URI';' – 2014-10-31 07:46:18

+0

沒有改變同樣的錯誤.. – 2014-10-31 08:40:56

0

嘗試修改您的更新功能將參數傳遞:

公共功能更新($ id = null)

這允許您將值或空值傳遞給該函數,並且將與您的路由一起工作。

你就那麼需要刪除此:

//product id 
$id = $this->uri->segment(4); 
+0

我認爲它沒有進入該功能,當我嘗試與段4.When我試圖沒有分段它的工作正常。 – 2014-10-31 09:26:02

+0

如果你有路由:$ route ['admin/clients/update'] ='admin_clients/update';和$ route ['admin/clients/update /(:any)'] ='admin_clients/update/$ 1';以及我發佈的代碼應該輸入該函數 – Oliverb 2014-10-31 09:29:28

+0

但是$ route ['admin/clients/update /(:any)'] ='admin_clients/update/$ 1';應首先在路由文件 – Oliverb 2014-10-31 09:31:03

0

試試這個:

  1. 在你config.php使用$config['base_url'] = ''//leave it blank;$config['index_page'] = ''// leave it blank;

  2. <a href="'.site_url("...")更改爲此<?php echo base_url("..."); ?>

  3. 每個使用site_url()的鏈接將其更改爲base_url()

看看它是否有效。也許你可以提供你的config.php,所以我們可以調試更多。