lithium\net\http\Router::formatters PHP Method

formatters() public static method

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.
    public static function formatters(array $formatters = array())
    {
        if (!static::$_formatters) {
            static::$_formatters = array('args' => function ($value) {
                return is_array($value) ? join('/', $value) : $value;
            }, 'controller' => function ($value) {
                if (strpos($value, '\\')) {
                    $value = explode('\\', $value);
                    $value = end($value);
                }
                return Inflector::underscore($value);
            });
        }
        if ($formatters) {
            static::$_formatters = array_filter($formatters + static::$_formatters);
        }
        return static::$_formatters;
    }

Usage Example

 /**
  * 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));
 }