使用CodeIgniter,我的代码中出现了一个奇怪的行为。我想要的是在我的数据库中列出一种人员列表,当我输入给定人员的ID时,会出现一个页面,其中包含我们在数据库中获得的有关此人的所有信息。
只是一件简单的事情。我成功完成了新闻官方教程的事情,但这根本不起作用!
我写了一个名为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');
}
我的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使用文件名来查看它必须加载的内容。小心。
答案 0 :(得分:0)
听起来像你的.htaccess没有被设置或被阅读。
在找到index.php脚本之前,并非所有默认服务器配置都会上传。
答案 1 :(得分: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,您就会知道问题
答案 2 :(得分:0)
没有直接关联,但您应该查看CodeIgniter Style Guide
方法名称应小写,单词用下划线('_')分隔。你可能不喜欢它并且发现它很痛苦 - 你知道在哪里 - 但是相信我坚持标准总是最好的想法,而且它看起来很好并且与第三方库/插件/助手一致。
另外,您不希望自定义路径 每个控制器的方法。并且您也不希望网址中包含大写字符