Есть ли бандл для Symfony на подобие DoctrineAuditBundle, но с возможностью формирования более расширенного человекочитаемого текста изменений?

Да, в Symfony существует бандл, который позволяет формировать более расширенный человекочитаемый текст изменений - это бандл "StofDoctrineExtensionsBundle".

StofDoctrineExtensionsBundle является бандлом для Symfony, который предоставляет дополнительные функциональные возможности для Doctrine ORM. В частности, этот бандл добавляет поддержку таких расширений, как "timestampable", "translatable", "blameable" и "loggable".

В контексте вопроса, наибольший интерес представляет расширение "loggable", которое позволяет отслеживать изменения данных в базе данных и хранить их в аудитории. Это похоже на функционал, который предоставляет DoctrineAuditBundle, однако StofDoctrineExtensionsBundle предоставляет более расширенную гибкость в формировании человекочитаемого текста изменений.

С использованием бандла StofDoctrineExtensionsBundle вы можете настроить аудиторию для отслеживания изменений полей сущности, и затем автоматически генерировать текстовые сообщения о внесенных изменениях. Эти сообщения могут быть сформированы на основе различных шаблонов и содержать информацию о том, какие поля были изменены, старые и новые значения, а также идентификаторы сущностей и другую полезную информацию.

Для использования StofDoctrineExtensionsBundle в вашем проекте, вам необходимо выполнить следующие шаги:

1. Установите бандл с помощью Composer, добавив его в ваш файл composer.json и запустив команду "composer install":

"require": {
    "stof/doctrine-extensions-bundle": "^1.4"
}

2. Включите бандл в вашем файле AppKernel.php:

public function registerBundles()
{
    $bundles = [
        // ...
        new StofDoctrineExtensionsBundleStofDoctrineExtensionsBundle(),
        // ...
    ];

    // ...
}

3. Настройте бандл в вашем файле config.yml:

stof_doctrine_extensions:
    default_locale: en_US
    orm:
        default:
            loggable: true

4. Создайте аудиторию для сущностей, которые вы хотите отслеживать, добавив аннотацию @GedmoLoggable к соответствующему классу сущности:

use GedmoMappingAnnotation as Gedmo;

/**
 * @ORMEntity
 * @GedmoLoggable
 */
class YourEntity
{
    // ...
}

5. Добавьте методы для получения текстового сообщения о внесенных изменениях в вашем классе сущности:

use GedmoLoggableEntityMappedSuperclassAbstractLogEntry;

/**
 * @ORMEntity
 */
class YourLogEntry extends AbstractLogEntry
{
    // ...
    
    public function getLogMessage()
    {
        // Формируйте текстовое сообщение на основе изменений.
    }
}

Теперь, когда вы внесете изменения в отслеживаемые поля сущности, StofDoctrineExtensionsBundle автоматически создаст запись в базе данных в таблице аудитории и вызовет метод getLogMessage() в вашем классе записи аудитории. Вы можете использовать этот метод для формирования более расширенного человекочитаемого текста изменений.

Таким образом, использование бандла StofDoctrineExtensionsBundle позволяет вам получить более гибкую возможность формирования человекочитаемого текста изменений по сравнению с DoctrineAuditBundle.