2011-11-08 3 views
0

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

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

Я написал контроллер унаследованный класс, который называется Человек, с помощью метода 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'); 
} 

Мой routes.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 в мой браузер. Что не так в моем коде? Я не вижу этого.

Любые идеи? Спасибо и извините за мой бедный английский.

EDIT:

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

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

ответ

0

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

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

в

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

строчный р лично.

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

+0

Вот и все, я нашел ответ за несколько минут до вас, но спасибо, помощник! – turbodoom

0

Звучит для меня как ваш .htaccess не настроен или не читается.

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

+0

Хорошо, спасибо. Но о каком типе вы говорите? Мне нужно создать его внутри корневой папки? Таким образом, маршрутизация в CI не работает по умолчанию? – turbodoom

+0

Проблема решена, см. «Редактировать» на исходном сообщении. – turbodoom

+0

@turbodoom, это действительно не имеет никакого отношения к Code Igniter. Ваш веб-сервер не будет поражать index.php, если это не было дано для этого. Вы можете сделать это в своей конфигурации Apache или .htaccess. Если вы размещаете в IIS, это проще всего с IIS 7, и вам нужно будет настроить web.config. – Brad

0

не имеет прямого отношения, но вы должны взглянуть на имена методов CodeIgniter Style Guide

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

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

Смежные вопросы