es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sonata Admin 4: Agregar una pantalla adicional al formulario de edición

Parece ser posible simplemente poner una cadena o plantilla en la vista de lista, pero ¿es posible hacer lo mismo en la vista de edición de una entidad en Sonata Admin 4?

Encontré https://docs.sonata-project.org/projects/SonataAdminBundle/en/4.x/reference/templates/#configuring-templates, pero no da acceso al formulario en sí. Esto es lo que encontré en base_edit.html.twig:

{% block form %}
    {{ block('parentForm') }}
{% endblock %}

Me gustaría lograr esto:

enter image description here

¿Cómo sería posible esto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Symfony y Sonata-Admin, puedo confirmar que es posible agregar una cadena/plantilla a la vista de edición de una entidad en Sonata Admin 4.

    Si bien la documentación oficial puede no proporcionar acceso al formulario en sí, aún es posible personalizar la vista de edición creando su propia plantilla para la entidad específica. Para lograr la personalización mostrada en la imagen proporcionada, debería crear una nueva plantilla para la vista de edición de esa entidad y anular la plantilla base_edit.html.twig predeterminada.

    Para crear una plantilla personalizada para una entidad, puede seguir estos pasos:

    1. Cree un nuevo directorio debajo de templates/bundles/SonataAdminBundle/CRUD en la carpeta de su proyecto.
    2. Cree un nuevo archivo de plantilla para la entidad, utilizando la convención de nombres edit_<nombre_entidad>.html.twig. Por ejemplo, si su entidad se llama “Producto”, debería crear un archivo llamado edit_producto.html.twig.

    3. Agregue los bloques necesarios al archivo de plantilla. En este caso, debería agregar lo siguiente:

    {% extends '@SonataAdmin/CRUD/base_edit.html.twig' %}
    
    {% block form %}
        {{ sonata_block_render({'type': 'sonata.block.service.template', 'name': 'custom_form_template', 'block_options': {'edit': true}}) }}
    {% endblock %}
    

    Tenga en cuenta que aquí se utiliza la función sonata_block_render para renderizar un bloque personalizado con el nombre custom_form_template. Este bloque se definirá en la configuración de servicios de su aplicación.

    1. Defina el bloque custom_form_template en su archivo services.yaml:
    services:
        # ...
        app.block.custom_form_template:
            class: 'Symfony\Component\Form\FormView'
            factory: ['@twig.form.renderer', 'renderBlock']
            arguments: ['@Symfony\Component\Form\FormRenderer', 'custom_form_template', []]
    

    Este servicio renderizará el bloque de plantilla de formulario personalizado, que se puede definir en su propio archivo Twig.

    1. Defina la plantilla de vista de formulario real en un nuevo archivo Twig en templates/bundles/SonataAdminBundle/CRUD/custom_form_template.html.twig. En este archivo, puede definir la estructura HTML del formulario como se muestra en la imagen proporcionada.

    Con estos pasos, ahora debería poder personalizar la vista de edición de cualquier entidad en Sonata Admin 4 para mostrar la estructura deseada.

Comments are closed.