Sonata Admin Bundle - Form type: sonata_type_collection - custom template?

前端 未结 1 777
南方客
南方客 2021-01-31 23:17

Is it possible to override the template for the form type: \"sonata_type_collection\"?

Ive tried along these lines:

$formMapper->add(\'slides\', \'son         


        
1条回答
  •  梦如初夏
    2021-02-01 00:03

    I found a great bit of code in /vendor/sonata-project/admin-bundle/Sonata/AdminBundle/Form/Extension/Field/Type/FormTypeFieldExtension.php which actually sets up an array of types to attach to the form view which it uses to prioritise twig block rendering: (lines 99 to 105)

    // add a new block types, so the Admin Form element can be tweaked based on the admin code
            $types    = $view->getVar('types');
            $baseName = str_replace('.', '_', $sonataAdmin['field_description']->getAdmin()->getCode());
            $baseType = $types[count($types) - 1];
    
            $types[] = sprintf('%s_%s', $baseName, $baseType);
            $types[] = sprintf('%s_%s_%s', $baseName, $sonataAdmin['field_description']->getName(), $baseType);
    

    Therefore all I had to do was define a block called mycompany_admin_content_galleries_sonata_type_collection_widget or mycompany_admin_content_galleries_slides_sonata_type_collection_widget and it only applies to this admin form :)

    To complete this solution in my Admin class I added this function:

    public function getFormTheme()
    {
        return array_merge(
            parent::getFormTheme(),
            array('MyBundle:Gallery:admin.slides.html.twig')
        );
    }
    

    and I created MyBundle/Resources/views/Gallery/admin.slides.html.twig, containing the following:

    {% use 'SonataAdminBundle:Form:form_admin_fields.html.twig' %} // I think this 
                 line is not really needed as the base admin's form theme uses this file
    
    {% block my_bundle_content_pages_slides_sonata_type_collection_widget %}
    
        // copied and edited the contents of Sonata/DoctrineORMAdminBundle/Resources/views/CRUD/edit_orm_one_to_many.html.twig
    
    {% endblock %}
    

    0 讨论(0)
提交回复
热议问题