Version

Documentation » Admin

8. The Show action »

« 6. The List View

7. Creating and Editing objects

Note

This document is a stub representing a new work in progress. If you’re reading this you can help contribute, no matter what your experience level with Sonata is. Check out the issues on Github for more information about how to get involved.

This document will cover the Create and Edit actions. It will cover configuration of the fields and forms available in these views and any other relevant settings.

7.1. Basic configuration

SonataAdmin Options that may affect the create or edit view:

sonata_admin:
    options:
        html5_validate:    true     # enable or disable html5 form validation
        confirm_exit:      true     # enable or disable a confirmation before navigating away
        use_select2:       true     # enable or disable usage of the Select2 jQuery library
        use_icheck:        true     # enable or disable usage of the iCheck library
        use_bootlint:      false    # enable or disable usage of Bootlint
        use_stickyforms:   true     # enable or disable the floating buttons
        form_type:         standard # can also be 'horizontal'

    templates:
        edit:              SonataAdminBundle:CRUD:edit.html.twig
        tab_menu_template: SonataAdminBundle:Core:tab_menu_template.html.twig

For more information about optional libraries:

Note

TODO: * options available when adding fields, inc custom templates

7.1.1. Routes

You can disable creating or editing entities by removing the corresponding routes in your Admin. For more detailed information about routes, see Routing.

<?php
// src/AppBundle/Admin/PersonAdmin.php

class PersonAdmin extends AbstractAdmin
{
    // ...

    protected function configureRoutes(RouteCollection $collection): void
    {
        /* Removing the edit route will disable editing entities. It will also
         * use the 'show' view as default link on the identifier columns in the list view.
         */
        $collection->remove('edit');

        /* Removing the create route will disable creating new entities. It will also
         * remove the 'Add new' button in the list view.
         */
        $collection->remove('create');
    }

    // ...
}

7.2. Adding form fields

Within the configureFormFields method you can define which fields should be shown when editing or creating entities. Each field has to be added to a specific form group. And form groups can optionally be added to a tab. See FormGroup options for additional information about configuring form groups.

Using the FormMapper add method, you can add form fields. The add method has 4 parameters:

  • name: The name of your entity.
  • type: The type of field to show; by defaults this is null to let Sonata decide which type to use. See Field Types for more information on available types.
  • options: The form options to be used for the field. These may differ per type. See Field Types for more information on available options.
  • fieldDescriptionOptions: The field description options. Options here are passed through to the field template. See Form Types, FieldDescription options for more information.

Note

The property entered in name should be available in your Entity through getters/setters or public access.

<?php
// src/AppBundle/Admin/PersonAdmin.php

class PersonAdmin extends AbstractAdmin
{
    // ...

    protected function configureFormFields(FormMapper $formMapper): void
    {
        $formMapper
            ->tab('General') // The tab call is optional
                ->with('Addresses')
                    ->add('title') // Add a field and let Sonata decide which type to use
                    ->add('streetname', TextType::class) // Add a textfield
                    ->add('housenumber', NumberType::class) // Add a number field
                    ->add('housenumberAddition', TextType::class, ['required' => false]) // Add a non-required text field
                ->end() // End form group
            ->end() // End tab
        ;
    }

    // ...
}

7.2.1. FormGroup options

When adding a form group to your edit/create form, you may specify some options for the group itself.

  • collapsed: unused at the moment
  • class: The class for your form group in the admin; by default, the value is set to col-md-12.
  • fields: The fields in your form group (you should NOT override this unless you know what you’re doing).
  • box_class: The class for your form group box in the admin; by default, the value is set to box box-primary.
  • description: A text shown at the top of the form group.
  • translation_domain: The translation domain for the form group title (the Admin translation domain is used by default).

To specify options, do as follows:

<?php
// src/AppBundle/Admin/PersonAdmin.php

class PersonAdmin extends AbstractAdmin
{
    // ...

    public function configureFormFields(FormMapper $formMapper): void
    {
        $formMapper
            ->tab('General') // the tab call is optional
                ->with('Addresses', [
                    'class'       => 'col-md-8',
                    'box_class'   => 'box box-solid box-danger',
                    'description' => 'Lorem ipsum',
                    // ...
                ])
                    ->add('title')
                    // ...
                ->end()
            ->end()
        ;
    }

    // ...
}

Here is an example of what you can do with customizing the box_class on a group:

Box Class

7.3. Embedding other Admins

Note

TODO: * how to embed one Admin in another (1:1, 1:M, M:M) * how to access the right object(s) from the embedded Admin’s code

7.4. Customizing just one of the actions

Note

TODO: * how to create settings/fields that appear on just one of the create/edit views * and any controller changes needed to manage them

Found a typo? Something is wrong in this documentation? Just fork and edit it!