Ver Fonte

use class parameters to override without redefine hole service

Gordon Franke há 12 anos atrás
pai
commit
3deef9d397

+ 9 - 3
Resources/config/form.xml

@@ -3,8 +3,14 @@
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
 
+    <parameters>
+        <parameter key="sonata.user.form.type.security_roles.class">Sonata\UserBundle\Form\Type\SecurityRolesType</parameter>
+        <parameter key="sonata.user.profile.form.type.class">Sonata\UserBundle\Form\Type\ProfileType</parameter>
+        <parameter key="sonata.user.profile.form.handler.default.class">Sonata\UserBundle\Form\Handler\ProfileFormHandler</parameter>
+    </parameters>
+
     <services>
-        <service id="sonata.user.form.type.security_roles" class="Sonata\UserBundle\Form\Type\SecurityRolesType">
+        <service id="sonata.user.form.type.security_roles" class="%sonata.user.form.type.security_roles.class%">
             <tag name="form.type" alias="sonata_security_roles" />
 
             <argument type="service" id="sonata.admin.pool" />
@@ -20,12 +26,12 @@
             </argument>
         </service>
 
-        <service id="sonata.user.profile.form.type" class="Sonata\UserBundle\Form\Type\ProfileType">
+        <service id="sonata.user.profile.form.type" class="%sonata.user.profile.form.type.class%">
             <argument>%fos_user.model.user.class%</argument>
             <tag name="form.type" alias="sonata_user_profile" />
         </service>
 
-        <service id="sonata.user.profile.form.handler.default" class="Sonata\UserBundle\Form\Handler\ProfileFormHandler" scope="request" public="false">
+        <service id="sonata.user.profile.form.handler.default" class="%sonata.user.profile.form.handler.default.class%" scope="request" public="false">
             <argument type="service" id="sonata.user.profile.form" />
             <argument type="service" id="request" />
             <argument type="service" id="fos_user.user_manager" />

+ 16 - 0
Resources/doc/reference/advanced_configuration.rst

@@ -5,6 +5,22 @@ Full configuration options:
 
 .. code-block:: yaml
 
+    parameters:
+        sonata.user.form.type.security_roles.class:     Sonata\UserBundle\Form\Type\SecurityRolesType
+
+        sonata.user.profile.form.type.class:            Sonata\UserBundle\Form\Type\ProfileType
+        sonata.user.profile.form.handler.default.class: Sonata\UserBundle\Form\Handler\ProfileFormHandler
+
+        sonata.user.admin.user.class: Sonata\UserBundle\Admin\Entity\UserAdmin
+        sonata.user.admin.user.controller: SonataAdminBundle:CRUD
+        sonata.user.admin.user.translation_domain: SonataUserBundle
+
+        sonata.user.admin.group.class: Sonata\UserBundle\Admin\Entity\GroupAdmin
+        sonata.user.admin.group.controller: SonataAdminBundle:CRUD
+        sonata.user.admin.group.translation_domain: %sonata.user.admin.user.translation_domain%
+
+        sonata.user.admin.groupname: sonata_user
+
     fos_user:
         db_driver:        orm # can be orm or odm
         firewall_name:    main

+ 3 - 0
Resources/doc/reference/profile_edition.rst

@@ -60,6 +60,9 @@ Next, you need to configure the ``profile`` section of ``sonata_user``:
                 name:               sonata_user_profile_form
                 validation_groups:  [Profile]
 
+You can also only override the service parameter to use your own php class, for example to override or
+disable some fields. So you don't need to redefine the hole service definition.
+
 And finally, just change the default ``profile`` routing. Actually it is the only configuration you need
 to define to make it works.