как сохранить настройки среды в EasyAdmin без переопределения базового контроллера - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть блог с сообщениями, и я использую EasyAdminBundle.Есть blog.creator = user.id.Соответственно есть две сущности.Я хочу, чтобы при создании записи в таблице блога идентификатор авторизованного пользователя указывался в поле blog.creator.Но никто не может редактировать это поле (blog.creator)

Я нашел только один способ сделать это: Настройка, основанная на переопределении стандартного AdminController

// src/Controller/AdminController.php

namespace App\Controller;

use App\Entity\Blog;
use EasyCorp\Bundle\EasyAdminBundle\Controller\EasyAdminController;

class AdminController extends EasyAdminController
{
    /**
     * @param Blog $entity
     */
    public function persistBlogEntity($entity)
    {
        $entity->setCreator($this->getUser());
        parent::persistEntity($entity);
    }
}

# config/routes/easy_admin.yaml
easy_admin_bundle:
    resource: 'App\Controller\AdminController'
    prefix: /admin
    type: annotation

Но, думаю, это нехорошо.Использование EasyAdmin основано на создании набора директив в конфигурации.Но для такой обычной вещи я должен использовать заднюю дверь (исключение из генеральной линии).Мне нужно сохранять параметры среды почти в каждой таблице, которую пользователь не должен редактировать.

Если вы знаете, скажите, есть ли более простой способ?

...