CI路由问题

时间:2014-10-28 11:28:54

标签: php codeigniter routing base-url

我目前正在学习CI,我遇到了一个我似乎无法解决的问题。

我在一个驱动器中设置我的wamp服务器,在www(root)文件夹中我已经解压缩了codeigniter文件。 ![例] [1] [1]:http://i.stack.imgur.com/7RKqG.png

然后我为视图/模型和控制器创建了我的php文件,并在config / routes.php中设置了默认路由

所以现在当我进入我的浏览器并键入localhost时,我显示的post.php没有任何问题。

但我无法从此处访问任何视图。例如,我有一个new_post.php视图,当我输入地址栏localhost / new_post.php时,我得到一个“未找到

在此服务器上找不到请求的URL /new_post.php。“错误。

我在做错了什么?下面我发布了我在post.php控制器中编写的代码以及我拥有的文件结构/名称的图像。

posts.php - controller

    <?php

class Posts extends CI_Controller
{
    function __construct()
    {
         parent::__construct();
         $this->load->model('post'); //loads the post model u created in the models folder
    }


    function index() //goes to this function 1st when u access the controller
    {
        $data['posts']=$this->post->get_posts();  // load all the data from the get_posts function in post model to the data array posts
        $this->load->view('post_index', $data); //loads the view 

    }


    function post($postID)
    {
        $data['post']=$this->post->get_post($postID);
        $this->load->view('post', $data);
    }

    function new_post()
    {
        if($_POST)
        {
            $data=array(
                'title'=> $_POST['title'],
                'post'=> $_POST['post'],
                'active' =>1
            );
            $this->post->insert_post($data);
            redirect(base_url(). 'posts/');
        }
        else
        {
            $this->load->view('new_post');
        }


    }


    function editpost($postID)
    {
        $data['success']=0;
        if($_POST)
        {
            $data_post=array(
                'title'=> $_POST['title'],
                'post'=> $_POST['post'],
                'active' => 1
            );
            $this->post->update_post($postID,$data);
            $data['success'] =1;
        }
        $data['post']=$this->post->get_post($postID);
        $this->load->view('edit_post',$data);

    }

    function deletepost($postID)
    {
       $this->post->delete_post($postID);
       redirect(base_url(). 'posts/');
    }

}

![结构] [1] [1]:http://i.stack.imgur.com/SnsbW.png

2 个答案:

答案 0 :(得分:0)

在CodeIgniter中,一切都通过主&#34; index.php&#34;文件,在根目录中。

所以,你会像这样访问你的新帖子页面;

http://localhost/index.php/posts/new_post

阅读CodeIgniter用户指南,它将回答您遇到的任何问题。

https://ellislab.com/codeigniter/user-guide/

答案 1 :(得分:0)

在CodeIgniter中,您必须使用控制器来访问其功能

你说的是“当我输入地址栏localhost / new_post.php我得到一个Not Found”因为你试图直接访问它的函数名你必须使用example.com/controllername/functionname这样

http://localhost/posts/new_post

有关更多信息,请查看codeignier网址

https://ellislab.com/codeigniter/user-guide/general/urls.html

如果您没有使用.htaccess删除index.php,那么您必须使用这样的网址

http://localhost/index.php/posts/new_post