根据教程,可以通过application / controllers / pages.php处理静态页面的所有请求
class Pages extends CI_Controller {
public function view($page = 'home')
{
if( ! file_exists('application/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('templates/nav', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/aside_right', $data);
$this->load->view('templates/bottom', $data);
}
}
这适用于“主页”页面,但我似乎无法调用views / pages / about。
我试图为about-page制作一个单独的控制器。它有效,但感觉有点不对。
应用/控制器/ about.php
class About extends CI_Controller {
public function index()
{
$this->load->view('templates/header');
$this->load->view('templates/nav');
$this->load->view('pages/about');
$this->load->view('templates/aside_right');
$this->load->view('templates/bottom');
}
}
我的htaccess文件或路由文件也有问题。使用上面写的About-controller,我只能通过输入domain.com/index.php/about来访问该页面。我希望它是domain.com/about等。
这就是我的routes.php之类的:
$route['about'] = 'about';
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';
我的Htaccess:
RewriteEngine on
RewriteBase /
# Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
答案 0 :(得分:2)
正如您所说,您不需要为about
页面使用其他控制器。您的问题出在routes.php
上。
$route['about'] = 'about';
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';
通过这种方式,它将搜索名为“about”的控制器,但它找不到控制器。如果删除第一行:
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';
它应该工作。在这种情况下,当您请求任何页面时,例如about
,它将调用pages/view/about
,其中pages
是控制器,view
是函数,about
是传递给函数的参数(替换默认的$page = home
)。
我还发现了你的逻辑中的另一个错误。你写了
这适用于“主页”页面,但我似乎无法调用views / pages / about。
您无需致电view/pages/about
。你要打电话给pages/view/about
。请记住,语法始终是相同的Controller/Function/Variable1/Variable2/Variable3
。因此,如果about
中有http://yourdomain.com/index.php/pages/view/about
规则,您应该能够看到http://yourdomain.com/about
页面$route['(:any)'] = pages/view/$1
或routes.php
。