1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 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
- <a href="{{ admin.generateUrl('list') }}">List</a>
- <a href="{{ admin.generateUrl('list', params|merge('page': 1) }}">List</a>
- 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
|