添加这些代码在 “核/ MY_Router.php” 内部 “MY_Router” 类 - *(类MY_Router延伸MX_Router {** ---代码放在这里 - **})*
我试图用路由规则和.htaccess来做到这一点,但它们都不起作用。然后编辑MX_Router代码并完成工作,但有一点需要注意,您必须在您的模块的控制器调用'admin'上创建一个子文件夹,并将控制器放置在此处工作,因为这样您可以使用默认如果控制器名称与模块名称相同,则直接调用控制器为模块进行路由。
public $module;
private $located = 0;
protected function _set_request($segments = array()){
$segments = $this->_validate_request($segments);
// If we don't have any segments left - try the default controller;
// WARNING: Directories get shifted out of the segments array!
if (empty($segments))
{
$this->_set_default_controller();
return;
}
if ($this->translate_uri_dashes === TRUE)
{
$segments[0] = str_replace('-', '_', $segments[0]);
if (isset($segments[1]))
{
$segments[1] = str_replace('-', '_', $segments[1]);
}
}
if($segments[0] == 'admin' && isset($segments[1])){
if (isset($segments[2])){
$this->set_method($segments[2]);
$segments[2] = $segments[2];
}else{
$this->set_method('index');
$segments[2] = 'index';
}
$this->directory = '../modules/'.$segments[1].'/controllers/admin/';
$this->module = $segments[1];
$this->class = $segments[1];
$segments[1] = $segments[1];
unset($segments[0]);
$this->uri->rsegments = $segments;
}else{
$segments = $this->locate($segments);
if($this->located == -1)
{
$this->_set_404override_controller();
return;
}
if(empty($segments))
{
$this->_set_default_controller();
return;
}
$this->set_class($segments[0]);
if (isset($segments[1]))
{
$this->set_method($segments[1]);
}
else
{
$segments[1] = 'index';
}
array_unshift($segments, NULL);
unset($segments[0]);
$this->uri->rsegments = $segments;
}
}
如果我这样做,那么我需要在路由配置中添加所有模块方法。并不知道所有的模块名称。用户可以添加任何模块到这个脚本。 – Ahmed
这是**(:any)**跳入的部分。您可以在** domain.com/users/admin/method **末尾添加此项,而不是方法**。 $这个 - > URI->段(3)**。 – Sasha
你是对的,但我不知道这个模块中的所有模块名称或所有控制器 我需要动态地路由它 – Ahmed