为PHP CodeIgniter 框架controllers支持多层目录_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > 为PHP CodeIgniter 框架controllers支持多层目录

为PHP CodeIgniter 框架controllers支持多层目录

 2013/11/1 23:19:01  lucklrj  程序员俱乐部  我要评论(0)
  • 摘要:Index:Router.php===================================================================---Router.php(版本11328)+++Router.php(版本12362)@@-274,13+274,26@@return$segments;}+$dir=$segments[0];+$dir_level=0;++while(is_dir(APPPATH.'controllers/'.$dir))
  • 标签:PHP 目录 controller
class="java" name="code">
Index: Router.php
===================================================================
--- Router.php	(版本 11328)
+++ Router.php	(版本 12362)
@@ -274,13 +274,26 @@
 			return $segments;
 		}
 
+		$dir=$segments[0];
+		$dir_level=0;
+
+		while(is_dir(APPPATH.'controllers/'.$dir)){
+			$dir_level++;
+			if(isset($segments[$dir_level])==false){
+				break;
+			}
+			$dir=$dir."/".$segments[$dir_level];
+		}
+		$dir=join("/",array_slice($segments,0,$dir_level));
+
+		
 		// Is the controller in a sub-folder?
-		if (is_dir(APPPATH.'controllers/'.$segments[0]))
+		if ($dir_level>0)
 		{
+			
 			// Set the directory and remove it from the segment array
-			$this->set_directory($segments[0]);
-			$segments = array_slice($segments, 1);
-
+			$this->set_directory($dir);
+			$segments = array_slice($segments, $dir_level);
 			if (count($segments) > 0)
 			{
 				// Does the requested controller exist in the sub-folder?
@@ -465,7 +478,7 @@
 	 */
 	function set_directory($dir)
 	{
-		$this->directory = str_replace(array('/', '.'), '', $dir).'/';
+		$this->directory = str_replace(array('.'), '', $dir).'/';
 	}
 
 	// --------------------------------------------------------------------

上一篇: Unity3D 200个插件免费分享 下一篇: 没有下一篇了!
发表评论
用户名: 匿名