2014-10-28 2 views
1

В настоящее время я изучаю CI, и я пришел к вопросу, который, по-видимому, не могу решить.CI routing issue

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

Затем я создал мой PHP-файлы для просмотра/модели и контроллера и установить маршрут по умолчанию в конфиге/routes.php

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

, но я не могу получить доступ к каким-либо из мнений. например, у меня есть вид 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

ответ

0

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

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

http://localhost/posts/new_post 

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

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

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

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

Привет, спасибо за ответ, я понял, что ваше высказывание. теперь я могу получить доступ к страницам при использовании index.php, но я использую '' RewriteEngine на RewriteCond $ 1!^(index \ .php | images | robots \ .txt) RewriteRule^(. *) $ /index.php/$ 1 [L] ", чтобы удалить index.php из моего url. в соответствии с руководством пользователя я должен поместить этот бит кода в htaccess, и я сделал это, но я до сих пор не могу получить доступ к страницам, используя 'http: // localhost/posts/new_post' –

0

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

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

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

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

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