Skip to content

Commit

Permalink
change fallbacks to accept a route class
Browse files Browse the repository at this point in the history
  • Loading branch information
AD7six committed Dec 6, 2014
1 parent 04804db commit 5af6464
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 5 deletions.
9 changes: 4 additions & 5 deletions src/Routing/RouteBuilder.php
Expand Up @@ -546,13 +546,12 @@ public function scope($path, $params, $callback = null) {
*
* This is a shortcut method for connecting fallback routes in a given scope.
*
* @param string $routeClass the route class to use, uses the default routeClass
* if not specified
* @return void
*/
public function fallbacks() {
$routeClass = $this->_routeClass;
if ($routeClass === 'Cake\Routing\Route\Route') {
$routeClass = 'InflectedRoute';
}
public function fallbacks($routeClass = null) {
$routeClass = $routeClass ?: $this->_routeClass;
$this->connect('/:controller', ['action' => 'index'], compact('routeClass'));
$this->connect('/:controller/:action/*', [], compact('routeClass'));
}
Expand Down
15 changes: 15 additions & 0 deletions tests/TestCase/Routing/RouteBuilderTest.php
Expand Up @@ -432,6 +432,21 @@ public function testFallbacks() {
$routes = new RouteBuilder($this->collection, '/api', ['prefix' => 'api']);
$routes->fallbacks();

$all = $this->collection->routes();
$this->assertEquals('/api/:controller', $all[0]->template);
$this->assertEquals('/api/:controller/:action/*', $all[1]->template);
$this->assertInstanceOf('Cake\Routing\Route\Route', $all[0]);
}

/**
* Test connecting fallback routes with specific route class
*
* @return void
*/
public function testFallbacksWithClass() {
$routes = new RouteBuilder($this->collection, '/api', ['prefix' => 'api']);
$routes->fallbacks('InflectedRoute');

$all = $this->collection->routes();
$this->assertEquals('/api/:controller', $all[0]->template);
$this->assertEquals('/api/:controller/:action/*', $all[1]->template);
Expand Down

0 comments on commit 5af6464

Please sign in to comment.