Действие списка EasyAdmin для текущего пользователя

Я пытаюсь получить список объектов из базы данных, где Entity.user = "current user".

Это отношение ManyToOne между сущностью сущности и сущностью пользователя

Я попытался использовать параметр dql-filter в конфигурации пакета, но не смог найти переменную параметра, которую мы можем найти в Controller $this->getUser() или в Twig {{app.user}}

Я пытался использовать собственный контроллер, но меня смущает, поскольку документация не очень подробная.


person Salim Ben Aissa    schedule 19.02.2019    source источник


Ответы (1)


Я бы выбрал собственный контроллер и перезаписал findAll или createListQueryBuilder, всегда добавляя DQL-фильтр. Что-то вроде этого:

protected function createListQueryBuilder($entityClass, $sortDirection, $sortField = null, $dqlFilter = null)
{
    if (null === $dqlFilter) {
        $dqlFilter = sprintf('entity.user = %s', $this->getUser()->getId());
    } else {
        $dqlFilter .= sprintf(' AND entity.user = %s', $this->getUser()->getId());
    }

    return parent::createListQueryBuilder($entityClass, $sortDirection, $sortField, $dqlFilter);
}
person dbrumann    schedule 19.02.2019
comment
Возможно, вам придется повозиться с именем свойства, но вы должны уловить идею. :) - person dbrumann; 19.02.2019
comment
Если я перезапишу метод, он не изменится глобально для других объектов? - person Salim Ben Aissa; 20.02.2019
comment
Нет, если вы создаете настраиваемый контроллер для объекта, а затем назначаете его объекту в конфигурации (добавляя ключевой контроллер в easy_admin.yaml в entities.<Entity>.controller: <CustomController>), только этот объект будет использовать контроллер - person dbrumann; 20.02.2019
comment
Ошибка в Twig: во время рендеринга шаблона возникло исключение ([Семантическая ошибка] строка 0, столбец 48 рядом с 'user = 1 ORDER': Ошибка: 'пользователь' не определен.). - person Salim Ben Aissa; 21.02.2019
comment
Я сменил пользователя на entity.user, и он работает! Обновите anwser, и я поставлю его как anwsered. - person Salim Ben Aissa; 21.02.2019
comment
у меня есть вопрос, это была одна неделя, я борюсь с newaction, я не знаю, как получить текущий идентификатор пользователя для поля, которое я пробовал, например, `` - {property: 'idUser', type: 'entity', type_options : {class: 'App \ Entity \ User', multiple: false}} `` `но в этом случае я должен выбрать пользователя. но именно то, что я хочу, - это когда я создаю статью, она должна получить текущий идентификатор пользователя и сохранить его в моей базе данных. - person Faisal; 02.01.2020