0

使用 CodeIgniter,我的代码中出现了奇怪的行为。我想要的是在我的数据库中列出一种人,当我输入给定人的 id 时,会出现一个页面,其中包含我们在数据库中获得的关于此人的所有信息。

只是一件简单的事情。我成功完成了新闻官方教程的事情,但它根本不起作用!

我用 viewPersonById 方法编写了一个名为 Person 的控制器继承类,就像这样:

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'; 

当我在浏览器中输入http://127.0.0.1:8888/ci/index.php/people/1时,我得到的只是 404。我的代码有什么问题?我看不到它。

有任何想法吗 ?感谢并为我糟糕的英语感到抱歉。

编辑 :

好的,伙计们,我发现出了什么问题。我觉得自己是有史以来最大的笨蛋,因为我的文件名很奇怪,比如“person.controler.php”和“person.model.php”。您的控制器名称和您在 routes.php中输入的内容必须完全匹配

所以我只需要将 person.controler.php 重命名为 person.php,将 person.model.php 重命名为 person_model.php,这样模型就可以在控制器中加载了。CI 使用文件的名称来查看它必须加载的内容。小心点。

4

3 回答 3

0

在我看来,您的 .htaccess 没有设置或被读取。

在找到您的 index.php 脚本之前,并非所有默认服务器配置都会沿用此路径。

于 2011-11-08T14:26:26.097 回答
0

如果您的控制器文件名是 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,你会知道问题

于 2011-11-08T14:51:44.263 回答
0

没有直接关系,但你应该看看CodeIgniter Style Guide

方法名称应小写,单词用下划线 ('_') 分隔。你可能不喜欢它并且觉得它很痛苦 - 你知道在哪里 - 但相信我坚持标准始终是最好的主意,而且它看起来不错并且与第三方库/插件/帮助程序一致。

另外,您不希望必须自定义路由每个控制器的每个方法。而且您也不希望您的网址中包含大写字符

于 2011-11-08T18:42:10.937 回答