use lithium\util\Inflector;
Router::formatters(array(
'controller' => function($value) { return Inflector::slug($value); },
'action' => function($value) { return Inflector::slug($value); }
));
_Note_: Because formatters are copied to Route objects on an individual basis, make sure
you append custom formatters _before_ connecting new routes.
public static formatters ( array $formatters = [] ) : array | ||
$formatters | array | An array of named formatter closures to append to (or overwrite) the existing list. |
return | array | Returns the formatters array. |
/** * Tests default route formatters, and setting/getting new formatters. */ public function testRouteFormatters() { $formatters = Router::formatters(); $this->assertEqual(array('args', 'controller'), array_keys($formatters)); $this->assertEqual('foo/bar', $formatters['args'](array('foo', 'bar'))); $this->assertEqual('list_items', $formatters['controller']('ListItems')); Router::formatters(array('action' => function ($value) { return strtolower($value); })); $formatters = Router::formatters(); $this->assertEqual(array('action', 'args', 'controller'), array_keys($formatters)); Router::formatters(array('action' => null)); $formatters = Router::formatters(); $this->assertEqual(array('args', 'controller'), array_keys($formatters)); }