sonata-project / SonataAdminBundle

The missing Symfony Admin Generator
https://docs.sonata-project.org/projects/SonataAdminBundle
MIT License
2.11k stars 1.26k forks source link

FormView - ModelType template doesn't seem to render ? #7588

Closed clem-tri closed 2 years ago

clem-tri commented 2 years ago

Environment

Sonata packages

show

``` $ composer show --latest 'sonata-project/*' sonata-project/admin-bundle 4.0.1 4.2.1 The missing Symfony Admin Generator sonata-project/block-bundle 4.7.0 4.8.0 Symfony SonataBlockBundle sonata-project/cache 2.2.0 2.2.0 Cache library sonata-project/doctrine-extensions 1.14.0 1.14.0 Doctrine2 behavioral extensions sonata-project/doctrine-orm-admin-bundle 4.0.0 4.1.0 Integrate Doctrine ORM into the SonataAdminBundle sonata-project/exporter 2.8.0 2.8.0 Lightweight Exporter library sonata-project/form-extensions 1.12.0 1.12.1 Symfony form extensions sonata-project/twig-extensions 1.9.0 1.9.0 Sonata twig extensions ```

Symfony packages

show

``` $ composer show --latest 'symfony/*' symfony/asset v4.4.27 v5.3.4 Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and imag... symfony/browser-kit v4.4.27 v5.3.4 Simulates the behavior of a web browser, allowing you to make requests, click on links and submit form... symfony/cache v4.4.31 v5.3.10 Provides an extended PSR-6, PSR-16 (and tags) implementation symfony/cache-contracts v2.4.0 v2.4.0 Generic abstractions related to caching symfony/config v4.4.30 v5.3.10 Helps you find, load, combine, autofill and validate configuration values of any kind symfony/console v4.4.30 v5.3.10 Eases the creation of beautiful and testable command line interfaces symfony/debug v4.4.31 v4.4.31 Provides tools to ease debugging PHP code symfony/dependency-injection v4.4.31 v5.3.10 Allows you to standardize and centralize the way objects are constructed in your application symfony/deprecation-contracts v2.4.0 v2.4.0 A generic function and convention to trigger deprecation notices symfony/doctrine-bridge v4.4.31 v5.3.8 Provides integration for Doctrine with various Symfony components symfony/dom-crawler v4.4.30 v5.3.7 Eases DOM navigation for HTML and XML documents symfony/dotenv v4.4.29 v5.3.10 Registers environment variables from a .env file symfony/error-handler v4.4.30 v5.3.7 Provides tools to manage errors and ease debugging PHP code symfony/event-dispatcher v4.4.30 v5.3.7 Provides tools that allow your application components to communicate with each other by dispatching ev... symfony/event-dispatcher-contracts v1.1.9 v2.4.0 Generic abstractions related to dispatching event symfony/expression-language v4.4.30 v5.3.7 Provides an engine that can compile and evaluate expressions symfony/filesystem v4.4.27 v5.3.4 Provides basic utilities for the filesystem symfony/finder v4.4.30 v5.3.7 Finds files and directories via an intuitive fluent interface symfony/flex v1.17.2 v1.17.2 Composer plugin for Symfony symfony/form v4.4.31 v5.3.10 Allows to easily create, process and reuse HTML forms symfony/framework-bundle v4.4.31 v5.3.10 Provides a tight integration between Symfony components and the Symfony full-stack framework symfony/http-client-contracts v2.4.0 v2.4.0 Generic abstractions related to HTTP clients symfony/http-foundation v4.4.30 v5.3.10 Defines an object-oriented layer for the HTTP specification symfony/http-kernel v4.4.32 v5.3.10 Provides a structured process for converting a Request into a Response symfony/inflector v4.4.27 v5.3.4 Converts words between their singular and plural forms (English only) Package symfony/inflector is abandoned, you should avoid using it. Use use `EnglishInflector` from the String component instead instead. symfony/intl v4.4.31 v5.3.8 Provides a PHP replacement layer for the C intl extension that includes additional data from the ICU l... symfony/mime v4.4.31 v5.3.8 Allows manipulating MIME messages symfony/monolog-bridge v4.4.27 v5.3.7 Provides integration for Monolog with various Symfony components symfony/monolog-bundle v3.7.0 v3.7.0 Symfony MonologBundle symfony/options-resolver v4.4.30 v5.3.7 Provides an improved replacement for the array_replace PHP function symfony/polyfill-intl-grapheme v1.23.1 v1.23.1 Symfony polyfill for intl's grapheme_* functions symfony/polyfill-intl-icu v1.23.0 v1.23.0 Symfony polyfill for intl's ICU-related data and classes symfony/polyfill-intl-idn v1.23.0 v1.23.0 Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions symfony/polyfill-intl-normalizer v1.23.0 v1.23.0 Symfony polyfill for intl's Normalizer class and related functions symfony/polyfill-mbstring v1.23.1 v1.23.1 Symfony polyfill for the Mbstring extension symfony/polyfill-php72 v1.23.0 v1.23.0 Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions symfony/polyfill-php73 v1.23.0 v1.23.0 Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions symfony/polyfill-php80 v1.23.1 v1.23.1 Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions symfony/polyfill-php81 v1.23.0 v1.23.0 Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions symfony/process v4.4.30 v5.3.7 Executes commands in sub-processes symfony/property-access v4.4.30 v5.3.8 Provides functions to read and write from/to an object or array using a simple string notation symfony/proxy-manager-bridge v4.4.27 v5.3.4 Provides integration for ProxyManager with various Symfony components symfony/routing v4.4.30 v5.3.7 Maps an HTTP request to a set of configuration variables symfony/security-acl v3.2.0 v3.2.0 Symfony Security Component - ACL (Access Control List) symfony/security-bundle v4.4.27 v5.3.8 Provides a tight integration of the Security component into the Symfony full-stack framework symfony/security-core v4.4.31 v5.3.10 Symfony Security Component - Core Library symfony/security-csrf v4.4.27 v5.3.4 Symfony Security Component - CSRF Library symfony/security-guard v4.4.27 v5.3.7 Symfony Security Component - Guard symfony/security-http v4.4.30 v5.3.10 Symfony Security Component - HTTP Integration symfony/serializer v4.4.31 v5.3.10 Handles serializing and deserializing data structures, including object graphs, into array structures ... symfony/service-contracts v2.4.0 v2.4.0 Generic abstractions related to writing services symfony/stopwatch v4.4.27 v5.3.4 Provides a way to profile code symfony/string v5.3.7 v5.3.10 Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme cluste... symfony/swiftmailer-bundle v3.5.2 v3.5.2 Symfony SwiftmailerBundle symfony/templating v4.4.30 v5.3.7 Provides all the tools needed to build any kind of template system symfony/translation v4.4.32 v5.3.10 Provides tools to internationalize your application symfony/translation-contracts v2.4.0 v2.4.0 Generic abstractions related to translation symfony/twig-bridge v4.4.27 v5.3.7 Provides integration for Twig with various Symfony components symfony/twig-bundle v4.4.30 v5.3.10 Provides a tight integration of Twig into the Symfony full-stack framework symfony/validator v4.4.31 v5.3.10 Provides tools to validate values symfony/var-dumper v4.4.31 v5.3.10 Provides mechanisms for walking through any arbitrary PHP variable symfony/var-exporter v4.4.31 v5.3.8 Allows exporting any serializable PHP data structure to plain PHP code symfony/webpack-encore-bundle v1.12.0 v1.12.0 Integration with your Symfony app & Webpack Encore! symfony/yaml v4.4.29 v5.3.6 Loads and dumps YAML files ```

PHP version

$ php -v
PHP 7.4.25 (cli) (built: Oct 20 2021 09:29:27) ( NTS Visual C++ 2017 x64 )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

Subject

I'm using Symfony 4.4 / Sonata Admin 4 and I'm trying to add a form field with ModelType type. No errors are thrown, but nothing is displayed apart from the field label. Am I missing something ?

I had a quite similar issue with a DatePickerType::class field in configureDatagridFilters() function. No datepicker was displayed until i add a template in the form_themes parameter in twig.yaml. Is there also something like that to do for ModelType ? I didn't see anything special in the documentation.

Minimal repository with the bug

Steps to reproduce

// src/Admin/MoreInformationsAdmin.php
 /**
     * {@inheritdoc}
     */
    protected function configureFormFields(FormMapper $form): void
    {
        $form
            // here is my ModelType field
            ->add('DocumentCategory',ModelType::class, ['class' => DocumentCategory::class, 'btn_add' => true])
           //
             ->add('name', null, array('label' => 'form.label_docname','required' => true))
            ->add('description',TextareaType::class,array('label' => 'form.label_argumentdoc','required' => false))
            ->add('filename', FileManagerType::class, array('root_name' => 'documents', 'label' => 
             'form.label_importdocument','required'=> false))
    }
// config/services.yaml
sonata_admin_more_informations:
        class: App\Admin\MoreInformationsAdmin
        arguments: [ ~, App\Entity\Document,App\Controller\UMFInfosComAdmin\ContentCRUDController ]
        calls:
            - [ setTemplates, [ { list: UMFInfosComAdmin/crud/list_content.html.twig } ] ]
        tags:
            - { name: "sonata.admin", manager_type: "orm", group: "Contenu", label: "Plus d'infos", label_translator_strategy: "sonata.admin.label.strategy.underscore" }
// App\Entity\Document.php

/** 
 * @ORM\Entity(repositoryClass="DocumentRepository")
 */
class Document
{
/** 
     * @ORM\ManyToOne(targetEntity="App\Entity\DocumentCategory", inversedBy="Documents")
     * @ORM\JoinColumn(name="document_category_id", referencedColumnName="id", nullable=false)
     */
    private $DocumentCategory;

...
// App\Entity\DocumentCategory.php
/** 
 * @ORM\Entity
 */
class DocumentCategory
{
/** 
     * @ORM\OneToMany(targetEntity="App\Entity\Document", mappedBy="DocumentCategory")
     */
    private $Documents;

...

Expected results

Something like that i guess:

image

Actual results

image

As you can see, it's blank below the "Catégorie" label.

clem-tri commented 2 years ago

My bad, i didn't see that i had to create an Admin for the DocumentCategory class in order to make the ModelType field work.