gpt4 book ai didi

php - 路由到 CodeIgniter 中的多个子文件夹

转载 作者:可可西里 更新时间:2023-11-01 12:28:03 24 4
gpt4 key购买 nike

我在我的 Controller 目录中设置了一个管理文件夹,在该文件夹下我有 3 个单独的子文件夹,其中包含 Controller 。

-- Controllers
---- Admin
------ Dashboard
-------- dashboard.php
-------- file.php
------ Members
-------- members.php
-------- file.php
------ Settings
-------- settings.php
-------- file.php

我试过像这样在 routes.php 文件中路由它

$route['admin/(:any)/(:any)'] = 'admin/$1/$2';
$route['admin/(:any)'] = 'admin/$1/$1';
$route['admin'] = 'admin/index';

我该怎么做才能解决这个问题?

最佳答案

此代码已经在 Internet 上,但我对其进行了修改以使其适用于 codeigniter 2.1

在此处查看旧源: http://glennpratama.wordpress.com/2009/10/20/multi-level-subfolder-for-controller-in-codeigniter/

在application/core目录下新建一个文件MY_Router.php,将下面的代码复制进去:

<?php

/*
* Custom router function v 0.2
*
* Add functionality : read into more than one sub-folder
*
*/

Class MY_Router extends CI_Router
{
Function MY_Router()
{
parent::__construct();
}

function _validate_request($segments)
{
if (file_exists(APPPATH.'controllers/'.$segments[0].EXT))
{
return $segments;
}

if (is_dir(APPPATH.'controllers/'.$segments[0]))
{
$this->set_directory($segments[0]);
$segments = array_slice($segments, 1);

/* ----------- ADDED CODE ------------ */

while(count($segments) > 0 && is_dir(APPPATH.'controllers/'.$this->directory.$segments[0]))
{
// Set the directory and remove it from the segment array
//$this->set_directory($this->directory . $segments[0]);
if (substr($this->directory, -1, 1) == '/')
$this->directory = $this->directory . $segments[0];
else
$this->directory = $this->directory . '/' . $segments[0];

$segments = array_slice($segments, 1);
}

if (substr($this->directory, -1, 1) != '/')
$this->directory = $this->directory . '/';

/* ----------- END ------------ */

if (count($segments) > 0)
{

if ( ! file_exists(APPPATH.'controllers/'.$this->fetch_directory().'/'.$segments[0].EXT))
{
show_404($this->fetch_directory().$segments[0]);
}
}
else
{
$this->set_class($this->default_controller);
$this->set_method('index');

if ( ! file_exists(APPPATH.'controllers/'.$this->fetch_directory().'/' .$this->default_controller.EXT))
{
$this->directory = '';
return array();
}

}

return $segments;
}

show_404($segments[0]);
}
}

关于php - 路由到 CodeIgniter 中的多个子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5213115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com