Проблема маршрутизации CI

В настоящее время я изучаю 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 — контроллер

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


person The Confused Coder    schedule 28.10.2014    source источник


Ответы (2)


В CodeIgniter вам нужно использовать контроллер, чтобы получить доступ к его функции.

вы говорите: «когда я набираю в адресной строке localhost/new_post.php, я получаю Not Found», потому что вы пытаетесь получить прямой доступ к его имени функции, вы должны использовать example.com/controllername/functionname, как это

http://localhost/posts/new_post

для получения дополнительной информации проверьте URL codeignier

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

если вы не удалили index.php с помощью .htaccess, вам нужно использовать свой URL-адрес следующим образом

http://localhost/index.php/posts/new_post
person Dexter    schedule 28.10.2014
comment
Привет, спасибо за ответ, я понял, о чем ты говоришь. теперь я могу получить доступ к страницам при использовании index.php, но я использую "RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L]" для удаления index.php из моего URL-адреса. в соответствии с руководством пользователя я должен поместить этот фрагмент кода в htaccess, и я это сделал, но я все еще не могу получить доступ к страницам, используя http://localhost/posts/new_post - person The Confused Coder; 28.10.2014

В CodeIgniter все выполняется через основной файл index.php в вашем корневом каталоге.

Таким образом, вы получите доступ к своей новой странице сообщения, например:

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

Прочтите руководство пользователя CodeIgniter, оно решит любую вашу проблему.

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

person Craig    schedule 28.10.2014