我当前的CodeIgniter有点问题。我有一个带有“页面” Controller 的CI安装程序,该 Controller 可从/ views加载静态文件,但它最多只能包含1个子文件夹,而我正在向其添加另一个子文件夹。
它几乎可以执行以下操作:
我想要实现的是在此结构中添加一个新的子文件夹:
当前的Pages.php Controller 如下:
class Pages extends CI_Controller {
public function view($page = 'index', $sub_page = 'index') {
if ($page == 'index') {
$path = $page . '.php';
} else {
$path = $page . '/' . $sub_page . '.php';
}
if (!file_exists('application/views/pages/' . $path)) {
if (!file_exists('application/views/pages/' . $page . '.php')) {
show_404();
} else {
$path = $page . '.php';
}
}
// $this->output->cache(60);
// $this->output->enable_profiler(TRUE);
$data['title'] = ucfirst($page);
$data['url'] = lcfirst($page);
$this->load->view('pages/modules/header', $data);
$this->load->view('pages/'. $path, $data);
$this->load->view('pages/modules/footer', $data);
}
}
你们有什么建议吗?
提前致谢!
最佳答案
首先,请确保您具有正确的路由。在config/routes.php
中:
$route['default_controller'] = "pages";
您必须在 Controller 的constuct方法中编写代码,否则您需要在url中添加方法名称。在
Pages.php
中:class Pages extends CI_Controller {
public function __construct() {
parent::__construct();
$this->view();
}
private function view() {
$url_string = $this->uri->uri_string(); //get all parameters form url
if(!file_exist(APPPATH . 'views/pages'. $url_string. '/index.php') {
if (!file_exists(APPPATH . 'views/pages/' . $url_string . '.php')) {
show_404();
} else {
$path = 'pages/' . $url_string . '.php';
}
}
else {
$path = 'pages/' . $url_string . '/index.php';
}
}
//here codes continue ...
}
关于codeigniter - CodeIgniter:基于文件夹和子文件夹的URL结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10136827/