Routing ======= The default routes used in the CRUD controller are accessible through the ``Admin`` class. The ``Admin`` class contains two routing methods: * ``getRoutes()``: Returns the available routes; * ``generateUrl($name, $options)``: Generates the related routes. Routing Definition ------------------ You can set a ``baseRouteName`` property inside your ``Admin`` class, which represents the route prefix. .. code-block:: php class PostAdmin extends Admin { protected $baseRouteName = 'news_post_admin'; } If no ``baseRouteName`` is defined then the Admin will pick one for you, built in the following format: 'admin_vendor_bundlename_entityname_action'. If the Admin fails to find the best baseRouteName then a ``RuntimeException`` will be thrown. The same goes for the ``baseRoutePattern``. Routing usage ------------- Inside a CRUD template, a route can be generated by using the ``Admin`` class. .. code-block:: html List List Create a route -------------- You can easily register new routes by defining them in the ``Admin`` class. Only Admin routes should be registered this way. Of course this requires the related action to be defined in the controller. As route is always generated with the ``Admin`` context, it can only be defined by its name. .. code-block:: php use Sonata\AdminBundle\Route\RouteCollection; class MediaAdmin extends Admin { public function configureRoutes(RouteCollection $collection) { $collection->add('duplicate'); $collection->add('view', $this->getRouterIdParameter().'/view'); } } Persistent parameters --------------------- In some cases, the interface might required to pass the same parameters across the different ``Admin``'s actions. Instead of settings them in the template or doing other weird hacks, you can defined a ``getPersistentParameters`` method. This method will be used when a link is being generated. .. code-block:: php class MediaAdmin extends Admin { public function getPersistentParameters() { if (!$this->getRequest()) { return array(); } return array( 'provider' => $this->getRequest()->get('provider'), 'context' => $this->getRequest()->get('context', 'default'), ); } } // the result : // $admin->generateUrl('create') => /admin/module/create?context=default