Customize form field rendering

前端 未结 3 1168
失恋的感觉
失恋的感觉 2020-12-30 09:23

I would like to customize the rendering of a form field in the edit page from sonata admin bundle to include an applet that uses the text content of a field.

I know

3条回答
  •  不知归路
    2020-12-30 10:08

    Found a solution

    What i have done is:

    1. Created a field type, lets call it myfieldType in myCompany\myBundle\Form\Type\myfieldType.php

      namespace myCompany\myBundle\Form\Type;
      
      use Symfony\Component\Form\AbstractType;
      use Symfony\Component\Form\FormBuilder;
      
      class myfieldType extends AbstractType
      {
      
          public function getParent()
          {
              return 'text';
          }
      
          public function getName()
          {
              return 'myfield';
          }
      }
      
    2. Registered the Type in app/config/services.yml

      myCompany.myBundle.form.type.myfield:
          class: myCompany\myBundle\Form\Type\myfieldType
          tags:
              - { name: form.type, alias: myfield }
      
    3. In my myentityAdmin class,

       protected function configureFormFields(FormMapper $formMapper)
       {
           $formMapper
           ->add('myfieldname', 'myfield')
           ...
       }
      

      and

      public function getFormTheme() {
          return array('myCompanymyBundle:Admin:myfield_edit.html.twig');
      }
      

      and the template :

      {# src/mycompany/myBundle/Resources/views/Form/myfield_edit.html.twig #}
      {% block myfield_widget %}
          {% spaceless %}
              {{ block('textarea_widget') }}
          {% endspaceless %}
      {% endblock %}
      

    And now i can access the form field value by the twig variable "value" !

    So easy... when you got it.

提交回复
热议问题