Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
92 lines (80 sloc) 2.166 kb
<?php
/*
* This file is part of the FOSRestBundle package.
*
* (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace FOS\RestBundle\Routing;
use Symfony\Component\Routing\RouteCollection;
/**
* Restful route collection.
*
* @author Konstantin Kudryashov <ever.zet@gmail.com>
*/
class RestRouteCollection extends RouteCollection
{
private $singularName;
/**
* Sets collection singular name.
*
* @param string $name Singular name
*/
public function setSingularName($name)
{
$this->singularName = $name;
}
/**
* Returns collection singular name.
*
* @return string
*/
public function getSingularName()
{
return $this->singularName;
}
/**
* Adds controller prefix to all collection routes.
*
* @param string $prefix
*/
public function prependRouteControllersWithPrefix($prefix)
{
foreach (parent::all() as $route) {
$route->setDefault('_controller', $prefix.$route->getDefault('_controller'));
}
}
/**
* Sets default format of routes.
*
* @param string $format
*/
public function setDefaultFormat($format)
{
foreach (parent::all() as $route) {
// Set default format only if not set already (could be defined in annotation)
if (!$route->getDefault('_format')) {
$route->setDefault('_format', $format);
}
}
}
/**
* Returns routes sorted by custom HTTP methods first.
*
* @return array
*/
public function all()
{
$routes = parent::all();
$customMethodRoutes = array();
foreach ($routes as $routeName => $route) {
if ( ! preg_match('/(_|^)(get|post|put|delete|patch|head|options)_/', $routeName)) {
$customMethodRoutes[$routeName] = $route;
unset($routes[$routeName]);
}
}
return $customMethodRoutes + $routes;
}
}
Jump to Line
Something went wrong with that request. Please try again.