Skip to content

Commit b14072a

Browse files
committed
Add Router::defaultRouteClass()
Apply patch from 'Tigran Gabrielyan'. Allows you to set the default route class used for all future routes. Fixes #2435
1 parent b76f8f8 commit b14072a

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

lib/Cake/Routing/Router.php

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,23 @@ class Router {
152152
*/
153153
protected static $_initialState = array();
154154

155+
/**
156+
* Default route class to use
157+
*
158+
* @var string
159+
*/
160+
protected static $_routeClass = 'CakeRoute';
161+
162+
/**
163+
* Set the default rotue class to use
164+
*
165+
* @param sting $routeClass to set as default
166+
* @return void
167+
*/
168+
public static function defaultRouteClass($routeClass) {
169+
self::$_routeClass = $routeClass;
170+
}
171+
155172
/**
156173
* Sets the Routing prefixes.
157174
*
@@ -259,7 +276,7 @@ public static function connect($route, $defaults = array(), $options = array())
259276
if (empty($options['action'])) {
260277
$defaults += array('action' => 'index');
261278
}
262-
$routeClass = 'CakeRoute';
279+
$routeClass = self::$_routeClass;
263280
if (isset($options['routeClass'])) {
264281
$routeClass = $options['routeClass'];
265282
if (!is_subclass_of($routeClass, 'CakeRoute')) {

lib/Cake/Test/Case/Routing/RouterTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2506,4 +2506,17 @@ public function testRouteRedirection() {
25062506
$this->assertEquals(Router::$routes[0]->response->header(), array());
25072507
}
25082508

2509+
/**
2510+
* Test setting the default route class
2511+
*
2512+
* @return void
2513+
*/
2514+
public function testDefaultRouteClass() {
2515+
$this->getMock('CakeRoute', array(), array('/test'), 'TestDefaultRouteClass');
2516+
Router::defaultRouteClass('TestDefaultRouteClass');
2517+
2518+
$result = Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
2519+
$this->assertInstanceOf('TestDefaultRouteClass', $result[0]);
2520+
}
2521+
25092522
}

0 commit comments

Comments
 (0)