我在wampserver上使用codeigniter,我对模型控制器视图很新,我试图很好地理解它是如何工作的。目前,我正在尝试基本创建一个控制器:在/application/controllers/pages.php我刚刚做了这个:
<?php
class Pages extends CI_Controller{
public function one(){
echo 'hello world';
}
}
?>
所以,是的,这是非常基本的,但当我尝试使用chrome达到方法时,我遇到了404错误:http://localhost/test/pages/one/
我在互联网上看了几个与我做同样事情的教程,但是他们在他们的网页上得到了“hello world”。
我发现它可能是因为我没有在我的URL中键入index.php但是我已经修改了我的config.php和我的route.php而不再需要输入它:
config.php文件:
$config['base_url'] = 'http://localhost/test';
/*
|--------------------------------------------------------------------------
| Index File
|--------------------------------------------------------------------------
|
| Typically this will be your index.php file, unless you've renamed it to
| something else. If you are using mod_rewrite to remove the page set this
| variable so that it is blank.
|
*/
$config['index_page'] = '';
routes.php文件:
$route['default_controller'] = 'pages/view';
$route['pages'] = 'pages/$1';
$route['(:any)'] = 'pages/view/$1';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
让我困扰的是,当我使用这个codeigniter的例子时,它运作良好,我没有得到404错误:
class Pages extends CI_Controller{
public function view($page = 'home')
{
if ( ! file_exists(APPPATH.'views/pages/'.$page.'.php'))
{
// Whoops, we don't have a page for that!
show_404();
}
$data['title'] = ucfirst($page); // Capitalize the first letter
$this->load->view('templates/header', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/footer', $data);
}
}
如果我尝试创建另一个函数,它将完全被忽略。我想我的路由文件有问题或者codeigniter的安装有问题,但是如果是,我更喜欢在重新安装之前询问所有...
有人对我的问题有答案吗?非常感谢。
改变你的路线
$route['default_controller'] = 'pages/view';
$route['pages'] = 'pages/$1';
$route['(:any)'] = 'pages/view/$1';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
至
$route['default_controller'] = 'pages/one';
$route['pages'] = 'pages/$1';
$route['(:any)'] = 'pages/one/$1';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;