Symfony 5 - Получить иерархию ролей, чтобы влиять на них пользователю - PullRequest
1 голос
/ 18 июня 2020

Используя Symfony 5, я создал несколько ролей с иерархией в "config / packages / security.yaml" y

Я создам интерфейс для создания / редактировать / удалять роли для пользователей. Итак, я хочу получить все роли, существующие в security.yaml, чтобы заполнить множественный выбор или раскрывающийся список.

Некоторые найденные инструкции устарели, например $this->container->getParameter('security.role_hierarchy').

Есть ли у вас решение вернуть эти данные?

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Я думаю, что правильный путь в Symfony 5 следующий:

$hierarchy = $this->container->getParameter('security.role_hierarchy.roles');

$roles = [];
array_walk_recursive($hierarchy, function($role) use (&$roles) {
    $roles[$role] = $role;
});

Вы можете получить доступ к ролям через функцию getParameter. Старый стиль не рекомендуется.

Если вы находитесь в контроллере, вы вызываете его напрямую $this->getParameter.

0 голосов
/ 18 июня 2020

Вы можете использовать parameter_bag следующим образом:

<?php

declare(strict_types=1);

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

/**
 * Class TestController
 * @package App\Controller
 */
class TestController extends AbstractController
{
    /**
     * @Route(path="test", name="test", methods={"GET"})
     * @param Request $request
     * @return Response
     */
    public function index(Request $request): Response
    {
        $roles = $this->container->get('parameter_bag')->get('security.role_hierarchy.roles');

        return new Response(json_encode($roles));
    }
}

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...