From 257875c6f9a6bc446c9d13d41d592e18a5336e27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Sessing=C3=B8?= Date: Sat, 9 Apr 2016 09:25:41 +0200 Subject: [PATCH] [TASK] Load group middleware if prefix matches - Middlewares from groups are now loaded if prefix matches. - Optimisations. --- src/Pecee/SimpleRouter/RouterBase.php | 8 +++++++- src/Pecee/SimpleRouter/RouterEntry.php | 2 +- src/Pecee/SimpleRouter/RouterGroup.php | 4 ---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Pecee/SimpleRouter/RouterBase.php b/src/Pecee/SimpleRouter/RouterBase.php index e6c6242..3265fab 100644 --- a/src/Pecee/SimpleRouter/RouterBase.php +++ b/src/Pecee/SimpleRouter/RouterBase.php @@ -68,7 +68,7 @@ class RouterBase { $newPrefixes = $prefixes; - if($route->getPrefix()) { + if($route->getPrefix() && trim($route->getPrefix(), '/') !== '') { array_push($newPrefixes, trim($route->getPrefix(), '/')); } @@ -85,6 +85,12 @@ class RouterBase { if($route instanceof RouterGroup && is_callable($route->getCallback())) { $group = $route; + + // Load middleware on group if route matches + if($route->matchRoute($this->request)) { + $route->loadMiddleware($this->request); + } + $route->renderRoute($this->request); $mergedSettings = array_merge($settings, $route->getMergeableSettings()); } diff --git a/src/Pecee/SimpleRouter/RouterEntry.php b/src/Pecee/SimpleRouter/RouterEntry.php index 3543e51..bb6b598 100644 --- a/src/Pecee/SimpleRouter/RouterEntry.php +++ b/src/Pecee/SimpleRouter/RouterEntry.php @@ -93,7 +93,7 @@ abstract class RouterEntry { * @return self */ public function setPrefix($prefix) { - $this->prefix = '/' . trim($prefix, '/') . '/'; + $this->prefix = '/' . ltrim($prefix, '/'); return $this; } diff --git a/src/Pecee/SimpleRouter/RouterGroup.php b/src/Pecee/SimpleRouter/RouterGroup.php index 015fb6b..231bb52 100644 --- a/src/Pecee/SimpleRouter/RouterGroup.php +++ b/src/Pecee/SimpleRouter/RouterGroup.php @@ -7,10 +7,6 @@ use Pecee\Http\Request; class RouterGroup extends RouterEntry { - public function __construct() { - parent::__construct(); - } - public function matchDomain(Request $request) { if($this->domain !== null) {