Маршрутизация с CodeIgniter, получение 404 с правильными маршрутами $ - PullRequest
0 голосов
/ 08 ноября 2011

Используя CodeIgniter, я получаю странное поведение в моем коде.Я хочу, чтобы в моей базе данных было что-то вроде человека, и когда я набираю идентификатор данного человека, появляется страница со всей информацией об этом человеке, которую мы имеем в базе данных.

Простопростая вещь.Я преуспел в том, что касается официального учебного пособия по новостям, и это совсем не работает!

Я написал унаследованный от контроллера класс с именем Person с методом viewPersonById, вот так:

class Person extends CI_Controller{

      public function __construct()
      {
      parent::__construct();
      $this->load->model('Person_Model');
}

public function index()
{

}

public function viewPersonById($parId){
    $data['person'] = $this->Person_Model->get($parId);

    $data['title'] = 'Person information';

    $this->load->view('templates/header', $data);
    $this->load->view('people/view', $data);
    $this->load->view('templates/footer');
} 

Мой route.php написан так:

$route['people/(:any)'] = 'Person/viewPersonById/$1';

$route['news/create'] = 'news/create';
$route['news/modify/(:any)'] = 'news/modify/$1';
$route['news/(:any)'] = 'news/view/$1';
$route['news'] = 'news';

$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view'; 

И все, что я получаю, это 404, когда я ввожу http://127.0.0.1:8888/ci/index.php/people/1 в моем браузере.Что не так в моем коде?Я не вижу этого.

Есть идеи?Спасибо и извините за мой плохой английский.

РЕДАКТИРОВАТЬ:

Хорошо, ребята, я узнал, что случилось.Я чувствую себя самым большим ослом за всю историю, потому что имена моих файлов были странными, как "person.controler.php" и "person.model.php".Имя вашего контроллера и то, что вы помещаете в rout.php , должны точно соответствовать .

Так что мне просто нужно было переименовать person.controler.php в person.php и person.model.php to person_model.php, чтобы модель могла быть загружена в контроллер.CI использует имена файлов, чтобы увидеть, что он должен загрузить.Будьте осторожны с этим.

Ответы [ 3 ]

0 голосов
/ 08 ноября 2011

Если имя вашего контроллера в файле person.php, то вы должны изменить:

$route['people/(:any)'] = 'Person/viewPersonById/$1';

на

$route['people/(:any)'] = 'person/viewPersonById/$1';

строчные pлично.

PS: попробуйте открыть http://127.0.0.1:8888/ci/index.php/Person/viewPersonById/1,, вы узнаете проблему

0 голосов
/ 08 ноября 2011

Не имеет прямого отношения, но вы должны взглянуть на Руководство по стилю CodeIgniter

Имена методов должны быть в нижнем регистре, а слова должны быть разделены подчеркиванием ('_'). Возможно, вам это не понравится и вы почувствуете боль в «вы знаете, где», но, поверьте, соблюдение стандартов всегда является лучшей идеей, плюс это выглядит красиво и согласуется со сторонними библиотеками / плагинами / помощниками.

Кроме того, вам не нужно настраивать маршрут каждый метод каждый контроллер. И вам также не нужны прописные буквы в ваших URL

0 голосов
/ 08 ноября 2011

Мне кажется, что ваш .htaccess не настроен или не читается.

Не все конфигурации сервера по умолчанию будут идти по пути, пока не найдут ваш скрипт index.php.

...