简体   繁体   English

404页面未找到codeigniter中的错误?

[英]404 page Not Found Error in codeigniter?

I have just started working with codeigniter, now working on admin control of my small project. 我刚刚开始使用Codeigniter,现在正在管理我的小项目。 I have client information list. 我有客户信息清单。 客户名单

when i click on view & edit button its giving me 404 error 当我单击查看和编辑按钮时,它给我404错误 错误页面

i have configured path in application/config/routes.php 我已经在application / config / 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

code to redirect to edit page 重定向到编辑页面的代码

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

Even delete is not working its giving me the same error. 即使删除也不起作用,它给了我同样的错误。 here is my .htaccess code 这是我的.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]

here is my controller file 这是我的控制器文件

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


}

please help me to solve this problem, response will be appreciated. 请帮助我解决这个问题,我们将不胜感激。 Thank you 谢谢

Use the following .htaccess: 使用以下.htaccess:

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

@Noor Fathima @Noor Fathima

please change the routing conditions 请更改路由条件

$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';

try modifying your update function to pass an argument : 尝试修改您的更新函数以传递参数:

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

this allows you to either pass a value or null to the function and will work with your routes. 这使您可以向函数传递值或null并将其与路由一起使用。

you would then need to delete this : 然后,您需要删除以下内容:

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

Try this: 尝试这个:

  1. In your config.php use $config['base_url'] = ''//leave it blank; 在您的config.php使用$config['base_url'] = ''//leave it blank; and $config['index_page'] = ''// leave it blank; $config['index_page'] = ''// leave it blank; .

  2. Change every <a href="'.site_url("...") to this <?php echo base_url("..."); ?> . 将每个<a href="'.site_url("...")更改为此<? <?php echo base_url("..."); ?>

  3. Every links that use site_url() change it to base_url() . 每个使用site_url()链接都将其更改为base_url()

See if it works. 看看是否可行。 Maybe you can provide your config.php too so we can debug more. 也许您也可以提供config.php以便我们进行更多调试。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM