diff --git a/system/router.php b/system/router.php index 9d2d4f4a..ddbabeda 100644 --- a/system/router.php +++ b/system/router.php @@ -30,7 +30,41 @@ public static function route($method, $uri) // -------------------------------------------------------------- $uri = ($uri != '/') ? '/'.$uri : $uri; - static::$routes = require APP_PATH.'routes'.EXT; + // -------------------------------------------------------------- + // If a route directory is being used, load the route file + // corresponding to the first segment of the URI. + // -------------------------------------------------------------- + if (is_dir(APP_PATH.'routes')) + { + if ($uri == '/') + { + if ( ! file_exists(APP_PATH.'routes/home'.EXT)) + { + throw new \Exception("A [home] route file is required when using a route directory."); + } + + static::$routes = require APP_PATH.'routes/home'.EXT; + } + else + { + $segments = explode('/', trim($uri, '/')); + + if ( ! file_exists(APP_PATH.'routes/'.$segments[0].EXT)) + { + throw new \Exception("No route file defined for routes beginning with [".$segments[0]."]"); + } + + static::$routes = require APP_PATH.'routes/'.$segments[0].EXT; + } + } + // -------------------------------------------------------------- + // If no route directory is being used, we can simply load the + // routes file from the application directory. + // -------------------------------------------------------------- + else + { + static::$routes = require APP_PATH.'routes'.EXT; + } // -------------------------------------------------------------- // Is there an exact match for the request?