如果我把一個控制器,一個2級的子文件夾中找到控制器「類別」不會找到它Codeingiter&HMVC無法如果在2級的子文件夾
application > modules > catalog > controllers > forum
application > modules > catalog > controllers > forum > categories
// unable to locate
application > modules > catalog > controllers > forum > categories > Category.php
// able to locate
application > modules > catalog > controllers > forum > Category.php
問題是possiable到修改MY_Router.php,這樣可以找到正確的文件夾,而不會影響其他任何東西。
我使用笨3.1.0和HMVC
我已經看過這個Unable to access the controller in subfolder但啓用時,它不會顯示default_controller。
<?php (defined('BASEPATH')) OR exit('No direct script access allowed');
/* load the MX_Router class */
require APPPATH."third_party/MX/Router.php";
class MY_Router extends MX_Router {
/** Locate the controller **/
public function locate($segments)
{
$this->located = 0;
$ext = $this->config->item('controller_suffix').EXT;
/* use module route if available */
if (isset($segments[0]) && $routes = Modules::parse_routes($segments[0], implode('/', $segments)))
{
$segments = $routes;
}
/* get the segments array elements */
list($module, $directory, $controller) = array_pad($segments, 3, NULL);
/* check modules */
foreach (Modules::$locations as $location => $offset)
{
/* module exists? */
if (is_dir($source = $location.$module.'/controllers/'))
{
$this->module = $module;
$this->directory = $offset.$module.'/controllers/';
/* module sub-controller exists? */
if($directory)
{
/* module sub-directory exists? */
if(is_dir($source.$directory.'/'))
{
$source .= $directory.'/';
$this->directory .= $directory.'/';
/* module sub-directory controller exists? */
if($controller)
{
if(is_file($source.ucfirst($controller).$ext))
{
$this->located = 3;
return array_slice($segments, 2);
}
else $this->located = -1;
}
}
else
if(is_file($source.ucfirst($directory).$ext))
{
$this->located = 2;
return array_slice($segments, 1);
}
else $this->located = -1;
}
/* module controller exists? */
if(is_file($source.ucfirst($module).$ext))
{
$this->located = 1;
return $segments;
}
}
}
if(! empty($this->directory)) return;
/* application sub-directory controller exists? */
if($directory)
{
if(is_file(APPPATH.'controllers/'.$module.'/'.ucfirst($directory).$ext))
{
$this->directory = $module.'/';
return array_slice($segments, 1);
}
/* application sub-sub-directory controller exists? */
if($controller)
{
if(is_file(APPPATH.'controllers/'.$module.'/'.$directory.'/'.ucfirst($controller).$ext))
{
$this->directory = $module.'/'.$directory.'/';
return array_slice($segments, 2);
}
}
}
/* application controllers sub-directory exists? */
if (is_dir(APPPATH.'controllers/'.$module.'/'))
{
$this->directory = $module.'/';
return array_slice($segments, 1);
}
/* application controller exists? */
if (is_file(APPPATH.'controllers/'.ucfirst($module).$ext))
{
return $segments;
}
$this->located = -1;
}
}
應用>模塊是所有方式首先這是HMVC – user4419336