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

В настоящее время я изучаю CI, и я пришел к проблеме, которую, похоже, не могу решить.

я установил свой wamp-сервер в дисковод и в папке www (root) извлек файлы codeigniter.
! [Пример] [1] [1]: http://i.stack.imgur.com/7RKqG.png

Затем я создал свои php-файлы для view / model и controller и установил маршрут по умолчанию в config / rout.php

так что теперь, когда я захожу в свой браузер и набираю localhost, я получаю post.php, отображаемый без каких-либо проблем.

но я не могу получить доступ ни к одному из представлений отсюда. например, у меня есть представление new_post.php, и когда я набираю в адресной строке localhost / new_post.php, я получаю «Not Found»

Запрашиваемый 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

1

Решение

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

Другие решения

В CodeIgniter все проходит через основной файл index.php в корневом каталоге.

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

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

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

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

0