Documentation » Admin

17. Sortable Sonata Type Model in Admin »

« 15. Bootlint

This Page

17. Sortable Sonata Type Model in Admin »

« 15. Bootlint

16. Lock Protection

Lock protection will prevent data corruption when multiple users edit an object at the same time.

16.1. Example

  1. Alice starts to edit the object
  2. Bob starts to edit the object
  3. Alice submits the form
  4. Bob submits the form

In this case, a message will tell Bob that someone else has edited the object, and that he must reload the page and apply the changes again.

16.2. Enable Lock Protection

By default, lock protection is disabled. You can enable it in your sonata_admin configuration:

  • YAML
    # config/packages/sonata_admin.yaml
            lock_protection: true

You must also configure each entity that you want to support by adding a field called $version on which the Doctrine Version feature is activated.

Using Annotations:

// src/Entity/Car.php

namespace App\Entity\Car;

use Doctrine\ORM\Mapping as ORM;

final class Car
    // ...

     * @ORM\Column(type="integer")
     * @ORM\Version
    protected $version;

    // ...

Using XML:

<?xml version="1.0" encoding="UTF-8"?>
<!-- src/Resources/orm/Car.orm.xml -->
    <entity name="App\Entity\Car">
        <!-- ... -->

        <field name="version" type="integer" version="true"/>

        <!-- ... -->

For more information about this visit the Doctrine docs


If the object model manager does not support object locking, the lock protection will not be triggered for the object. Currently, only the SonataDoctrineORMAdminBundle supports it.

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