Chill Documentation
latest
  • Installation & Usage
  • Development
    • Instructions to create a new bundle
    • CRUD (Create - Update - Delete) for one entity
    • Helpers for building a REST API
    • Routing
    • Menus
      • Concepts
      • Add a menu in a template
      • Create an entry in an existing menu
      • Customize menu rendering
      • Caveats
    • Forms
    • Access control model
    • Messages to users
    • Pagination
    • Localisation
    • Logging
    • Database migrations
    • Searching
    • Timelines
    • Exports
    • Embeddable comments
    • Run tests
    • Useful snippets
    • Developer manual
    • Assets
    • Cron Jobs
    • Layout and UI
    • Help, I am lost !
  • Bundles
Chill Documentation
  • »
  • Development »
  • Menus
  • Edit on GitLab

Menus¶

Chill has created his own menu system

See also

Routes dans Chill [specification]
The issue wich discussed the implementation of routes.

Concepts¶

Warning

to be written

Add a menu in a template¶

In your twig template, use the chill_menu function :

{{ chill_menu('person', {
          'layout': 'ChillPersonBundle::menu.html.twig',
          'args' : {'id': person.id },
          'activeRouteKey': 'chill_person_view'
     }) }}

The available arguments are:

  • layout : a custom layout. Default to ChillMainBundle:Menu:defaultMenu.html.twig
  • args : those arguments will be passed through the url generator.
  • activeRouteKey must be the route key name.

Note

The argument activeRouteKey may be a twig variable, defined elsewhere in your template, even in child templates.

Create an entry in an existing menu¶

If a route belongs to a menu, you simply add this to his definition in routing.yml :

chill_person_history_list:
    pattern: /person/{person_id}/history
    defaults: { _controller: ChillPersonBundle:History:list }
    options:
        #declare menus
        menus:
            # the route should be in 'person' menu :
            person:
                #and have those arguments :
                order: 100
                label: menu.person.history
  • order (mandatory) : the order in the menu. It is preferrable to increment by far more than 1.
  • label (mandatory) : a translatable string.
  • helper (optional) : a text to help people to understand what does the menu do. Not used in default implementation.
  • condition (optional) : an `Expression Language <http://symfony.com/doc/current/components/expression_language/index.html> `_ which will make the menu appears or not. Typically, it may be used to say “show this menu only if the person concerned is more than 18”. Not implemented yet.
  • access (optional) : an Expression Language to evalute the possibility, for the user, to show this menu according to Access Control Model. Not implemented yet.

You may add additional keys, but should not use the keys described above.

You may add the same route to multiple menus :

chill_person_history_list:
    pattern: /person/{person_id}/history
    defaults: { _controller: ChillPersonBundle:History:list }
    options:
        menus:
            menu1:
                order: 100
                label: menu.person.history
            menu2:
                order: 100
                label: another.label

Customize menu rendering¶

You may customize menu rendering by using the layout option.

Warning

TODO : this part should be written.

Caveats¶

Currently, you may pass arguments globally to each menu, and they will be all passed to route url. This means that :

  • the argument name in the route entry must match the argument key in menu declaration in twig template
  • if an argument is missing to generate an url, the url generator will throw a SymfonyComponentRoutingExceptionMissingMandatoryParametersException
  • if the argument name is not declared in route entry, it will be added to the url, (example: /my/route?additional=foo)
Next Previous

© Copyright 2014-2016, Champs-Libres, published under the terms of the GNU Free Documentation License, Version 1.3 Revision 331443ae.

Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: latest
Versions
latest
stable
Downloads
On Read the Docs
Project Home
Builds