codeigniter 代码点火器路由错误

5tmbdcev  于 2023-01-15  发布在  其他
关注(0)|答案(2)|浏览(194)

http://mysite/products/create

Not Found

The requested URL /products/create was not found on this server.
Apache/2.2.16 (Debian) Server at site5.example.com Port 80

网站Map=〉

$route['default_controller'] = 'products';
$route['404_override'] = '';

型号=〉

<?php
class Products_model extends CI_Model {

    function __construct()
    {
        $this->load->database();

    }

    function get_products($slug = FALSE)
    {
        if ($slug === FALSE)
        {
            $query = $this->db->get('products');
            return $query->result_array();

        }

        $query = $this->db->get_where('products', array('slug' => $slug));
        return $query->row_array();
    }

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

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

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

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

    }

}

控制器=〉

<?php
class Products extends CI_Controller {

    function __construct()
    {
        parent::__construct();
        $this->load->model('products_model');

    }

    function index()
    {
        $data['products'] = $this->products_model->get_products();
        $data['title'] = 'Products archive';
        $this->load->view('products/index', $data);
    }

    function view($slug)
    {
        $data['products'] = $this->news_model->get_news($slug);
    }

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

        $data['title'] = 'Create a products item';

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

        if ($this->form_validation->run() === FALSE)
        {
            //$this->load->view('templates/header', $data); 
            $this->load->view('products/create');
            //$this->load->view('templates/footer');

        }
        else
        {
            $this->news_model->set_news();
            $this->load->view('products/success');
        }   
    }

}
?>

查看=〉

<h2>Create a news item</h2>

<?php echo validation_errors(); ?>

<?php echo form_open('products/create') ?>

    <label for="title">Title</label> 
    <input type="input" name="title" /><br />

    <label for="text">Text</label>
    <textarea name="text"></textarea><br />

    <input type="submit" name="submit" value="Create news item" /> 

</form>

为什么我会得到这个错误?错误在哪里?

esbemjvw

esbemjvw1#

不是这样的:

$route['default_controller'] = 'products/index';
$route['products/create'] = 'products/create';
$route['404_override'] = '';

这样做:

$route['default_controller'] = 'products';
$route['404_override'] = '';

不要指定方法,因为CI将在不存在的应用程序/产品文件夹中查找“索引”控制器。如果在路由中指定路径,则CI将查找路径。

fhg3lkii

fhg3lkii2#

提醒一下(尤指提醒我自己).
如果你创造出这样的东西

$route['products-view'] = 'products'; //refer to products.php
$route['products-create'] = 'products/detail/create'; //refer to products/detail.php

尝试打开products-create时,您将面临路由错误,因为您有一个文件名products.php,它将认为文件中有一个名为detail的方法。CI将打开到products,但没有这样的方法名detail,并将抛出错误。

相关问题