CodeIgniter:基于文件夹和子文件夹的URL结构
我对当前的CodeIgniter有点问题。我安装了一个带有“Pages”控制器的CI,该控制器从/views加载静态文件,但它只会上升到1个子文件夹,我希望向其中添加另一个子文件夹 它主要做以下几点:CodeIgniter:基于文件夹和子文件夹的URL结构,codeigniter,Codeigniter,我对当前的CodeIgniter有点问题。我安装了一个带有“Pages”控制器的CI,该控制器从/views加载静态文件,但它只会上升到1个子文件夹,我希望向其中添加另一个子文件夹 它主要做以下几点: class Pages extends CI_Controller { public function view($page = 'index', $sub_page = 'index') { if ($page == 'index') { $path = $page
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);
}
}
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);
}
}
你们有什么建议吗
提前谢谢 使用该类并将片段转换为目录。大致如下:
$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';
}
$i=$this->uri->total_segments();
$path=APPPATH.“视图/页面”;
对于($j=2;$juri->段($j);
}
如果(!file_存在($path./index.php))){
如果(!file_存在($path..php”)){
show_404();
}否则{
$path=$path.'.php';
}
}否则{
$path=$path'/index.php';
}
首先确保路由正确。在config/routes.php
中:
$route['default_controller'] = "pages";
必须在控制器的construct方法中编写代码,否则需要在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 ...
}
如果我从site.com/url/buy/faq加载faq.php文件
/视图/url/购买等
我没有时间检查您的代码,但以下是您可以尝试的内容。
使用路线:
config/routes.php
$route['url/buy/(:any)'] = 'pages/view/$1';
controllers/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;
}
}
问题是什么?404页面始终存在?是的,它无法与其他子文件夹一起工作。感谢您的代码!我使用了它,几乎使其正常工作,但我确实遇到了一个错误(无法加载请求的文件:views/url/buy/index.php)。该路径是正确的,因此我猜测它将正确加载文件,但我被困在$this->load->view。关于如何编写此加载视图有任何建议吗?@Max I thikn这是我的错误。从
$path
变量的开头删除视图/
。不需要它。更新的代码。检查已尝试使用该选项,我得到:找不到您请求的页面。谢谢,但这将意味着手动添加所有路由,并且将有多个文件夹/子文件夹。