混淆CodeIgniter路线

时间:2018-11-04 09:37:04

标签: php codeigniter

这是我的路线:

$route['pages/show_create']['GET'] = 'pages/show_create';
$route['pages/create']['POST'] = 'pages/create';

这是我的控制器:

public function show_create()
    {
        $data['title'] = 'Create new news';     
        $this->load->view('templates/header', $data);
        $this->load->view('news/create');
        $this->load->view('templates/footer');
    }

    public function create()
    {
        $data['title'] = 'Create new news';
        $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('news/create');
            $this->load->view('templates/footer');
        }
        else
        {
            $this->news_model->set_news();
            $this->load->view('news/success');
        }
    }

我想通过访问news/show_create路由来显示表单,但它只返回404。我的代码有什么问题?谢谢

4 个答案:

答案 0 :(得分:1)

Codeigniter文档是最简单的编程文档。您可以通过以下链接轻松了解有关路由的更多信息。

https://www.codeigniter.com/userguide3/general/routing.html

正如我在您的代码中看到的那样,您无需在路由中提到方法类型。

这里我假设您有一个PagesController类,您已经在其中使用名称show_create创建了一个方法,为此您可以在route类中设置如下所示的路由。如果仍然有困惑,可以在此处编写。

$ route ['news / show_create'] ='pages / show_create';

答案 1 :(得分:0)

将此添加到您的路线。

$route['news/show_create']['GET'] = 'pages/show_create';

我假设您的控制器名称是PageController。

这是格式。

$route['desired_route']['method'] = 'controller_name/function';

答案 2 :(得分:0)

尝试一下:

$route['news/show_create']='Controller_name/method_name';

答案 3 :(得分:0)

看起来您不需要路线。如果将它们删除,并假设控制器名为pages,则可以调用类似的方法

http://example.com/pages/show_create

http://example.com/pages/create

如果您真的想通过访问news/show_create来显示表单,那么Girraj的答案中的$route是解决方法。

$route['news/show_create'] = 'pages/show_create';