private function collectCrudRoutes()
{
/** @var $collection \Symfony\Component\Routing\RouteCollection */
$collection = $this->router->getRouteCollection();
$allRoutes = $collection->all();
/** @var $route \Symfony\Component\Routing\Route */
foreach ($allRoutes as $routeName => $route) {
$defaults = $route->getDefaults();
if (!isset($defaults[self::TAG_CRUD])) {
continue;
}
if (!isset($defaults['_controller'])) {
throw new GeneralException(sprintf('Route %s doesn\'t contain \'_controller\' argument.', $routeName));
}
$routeNameParts = $this->explodeRouteNameParts($defaults['_controller']);
$crudRoute = new CrudRoute();
$crudRoute->setRouteName($routeName);
$crudRoute->setCrudName($defaults[self::TAG_CRUD]);
$crudRoute->setControllerFullName($routeNameParts[0]);
$crudRoute->setBundleName($routeNameParts[1] . $routeNameParts[2]);
//TODO: check long namespaces
$crudRoute->setControllerName($routeNameParts[3]);
$crudRoute->setActionName($routeNameParts[4]);
$this->crudRoutes[$crudRoute->getControllerFullName()] = $crudRoute;
}
}