我在使用当前的CodeIgniter时遇到了一些问题。我有一个带有“Pages”控制器的CI安装程序,它从/ views加载静态文件,但它最多只能到1个子文件夹,我想要添加另一个子文件夹。
它几乎可以做到以下几点:
我想要实现的是在此结构中添加一个新的子文件夹:
当前的Pages.php控制器如下:
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);
}
}
你们有什么建议吗?
提前致谢!
答案 0 :(得分:1)
首先确保您有正确的路由。在config/routes.php
:
$route['default_controller'] = "pages";
您必须在控制器的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 ...
}
答案 1 :(得分:0)
使用URI类并将段转换为目录。大致像这样:
$i = $this->uri->total_segments();
$path = APPPATH."views/pages";
for($j=2;$j<$i;$j++){
$path = $path . "/" . $this->uri->segment($j);
}
if (!file_exists($path . "/index.php")) {
if (!file_exists($path . ".php")) {
show_404();
} else {
$path = $path . '.php';
}
}else{
$path = $path . '/index.php';
}
答案 2 :(得分:0)
如果我去site.com/url/buy/faq加载faq.php文件 / views / url / buy等等..
我没有时间检查你的代码,但这是你可以尝试的。 使用路线:
配置/ routes.php文件
$route['url/buy/(:any)'] = 'pages/view/$1';
控制器/ pages.php
class Pages extends CI_Controller {
function __construct() {
parent::__construct();
}
function view($page) {
if(!file_exist(APPPATH . "views/pages/{$page}.php") {
$this->load->view("pages/{$page}");
}
else {
show_404;
}
}