Отображать только некоторые данные соната

0

Я только что открыл Сонату, и мне кажется, что это круто, но я не могу найти, как делать простые вещи.

Например, у меня есть список элементов, от одного до многих для пользовательского объекта, возможно ли отображать только те объекты, которые принадлежат текущему пользователю?

В этом же Admin я хотел бы отображать больше полей, если у пользователя есть роль администратора.

Для завершения можно отобразить некоторые части администратора только для некоторых ролей, например, я хочу, чтобы пользователь с администратором роли на моем userAdmin.

  • 0
    Все это возможно в администраторе сонаты, вы просто должны копать документацию
  • 0
    @MKhalidJunaid Спасибо за ваш ответ, я уже прочитал документ, я думаю, что третья часть находится в части безопасности, я могу найти ее. Но для двух первых пунктов, может быть, в пакетных действиях? Я действительно не понимаю, как это работает
Показать ещё 1 комментарий
Теги:
sonata-admin

1 ответ

1
Лучший ответ

Чтобы отфильтровать список, вы должны использовать createQuery в своем классе администратора, например:

 public function createQuery($context = 'list') {
    $user = $this->getConfigurationPool()->getContainer()->get('security.context')->getToken()->getUser();
    $query = parent::createQuery($context);
    $query->andWhere($query->getRootAlias() .'.user =: user'));
    $query->setParameter('user', $user);

    return $query;
}

Чтобы отображать больше полей в зависимости от пользовательских ролей, вы можете сделать это в формеMapper, например:

if ($user->hasRole('ROLE_ADMINISTRATEUR'))
{
  $formMapper->addYourfields ....
}

Наконец, чтобы закрепить область отверстия, вы можете использовать symfony ACL, например, в security.yml, вы можете это сделать:

- { path: ^/admin/, role:  [ROLE_ADMINISTRATEUR] }

Вы можете больше узнать о symfony ACL

  • 0
    Спасибо, но для последней части я предпочитаю использовать роли сонаты

Ещё вопросы

Сообщество Overcoder
Наверх
Меню