advance.rst 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. Advance
  2. =======
  3. Service Configuration
  4. ---------------------
  5. When you create a new Admin service you can configure its dependencies, by default services who are injected are:
  6. ======================== =============================================
  7. Dependencies Service Id
  8. ======================== =============================================
  9. model_manager sonata.admin.manager.%manager-type%
  10. form_contractor sonata.admin.builder.%manager-type%_form
  11. show_builder sonata.admin.builder.%manager-type%_show
  12. list_builder sonata.admin.builder.%manager-type%_list
  13. datagrid_builder sonata.admin.builder.%manager-type%_datagrid
  14. translator translator
  15. configuration_pool sonata.admin.pool
  16. router router
  17. validator validator
  18. security_handler sonata.admin.security.handler
  19. menu_factory knp_menu.factory
  20. router_builder sonata.admin.route.path_info
  21. label_translator_strategy sonata.admin.label.strategy.form_component
  22. ========================= =============================================
  23. Note: %manager-type% is replace by the manager type (orm, odm...)
  24. You have 2 ways of defining the dependencies inside a ``services.xml``.
  25. * With a tag attribute, less verbose::
  26. .. code-block:: xml
  27. <service id="acme.project.admin.security_feed" class="AcmeBundle\ProjectBundle\Admin\ProjectAdmin">
  28. <tag
  29. name="sonata.admin"
  30. manager_type="orm"
  31. group="Project"
  32. label="Project"
  33. label_translator_strategy="sonata.admin.label.strategy.native"
  34. router_builder="sonata.admin.route.path_info"
  35. />
  36. <argument />
  37. <argument>AcmeBundle\ProjectBundle\Entity\Project</argument>
  38. <argument />
  39. </service>
  40. * With a method call, more verbose
  41. .. code-block:: xml
  42. <service id="acme.project.admin.project" class="AcmeBundle\ProjectBundle\Admin\ProjectAdmin">
  43. <tag
  44. name="sonata.admin"
  45. manager_type="orm"
  46. group="Project"
  47. label="Project"
  48. />
  49. <argument />
  50. <argument>AcmeBundle\ProjectBundle\Entity\Project</argument>
  51. <argument />
  52. <call method="setLabelTranslatorStrategy">
  53. <argument type="service" id="sonata.admin.label.strategy.native" />
  54. </call>
  55. <call method="setRouterBuilder">
  56. <argument type="service" id="sonata.admin.route.path_info" />
  57. </call>
  58. </service>
  59. If you want to modify the service who are going to be injected, add the following code to your
  60. application's config file:
  61. .. code-block:: yaml
  62. # app/config/config.yml
  63. admins:
  64. sonata_admin: #method name, you can find the list in the table above
  65. sonata.order.admin.order: #id of the admin service's
  66. model_manager: sonata.order.admin.order.manager #id of the your service
  67. Admin Extension
  68. ---------------
  69. S