如何根据服务路线获取服务标签?

时间:2014-07-07 09:55:42

标签: symfony sonata-admin

我正在开发一个权限系统,我希望获得有关Sonata中加载的所有管理类的信息。 我通过

列出了所有这些课程
$this->getConfigurationPool()->getAdminClassas();

我想为这些服务获取定义的标签(组/标签)。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以致电getDashboardGroups()

上的getConfigurationPool()来获取论坛/标签
$groups=$this->getConfigurationPool()->getDashboardGroups();
$adminGroups=array();
$i = 0;
foreach ($groups as $key => $val) {
    $adminGroups['groups'][$i]['label']=$val['label'];
    foreach ($val['items'] as $items) {
        $adminGroups['groups'][$i]['items'][]=$items->getLabel();

    }
$i++;
}
echo '<pre>';print_r($adminGroups);echo '</pre>';

因此,生成的$adminGroups数组将包含以下形式的所有组及其管理员标题

Array
(
    [groups] => Array
        (
            [0] => Array
                (
                    [label] => Group 1
                    [items] => Array
                        (
                            [0] => Menu item 1
                        )

                )

            [1] => Array
                (
                    [label] => Group 2
                    [items] => Array
                        (
                            [0] => Menu item 1
                            [1] => Menu item 2
                            [2] => Menu item 3
                        )

                )

            [2] => Array
                (
                    [label] => Group 3
                    [items] => Array
                        (
                            [0] => Menu item 1
                            [1] => Menu item 2
                        )

                )
   /*And so on ....*/
        )
)

上面会返回管理标签,这些标签设置为show_in_dashboard = true,可以通过服务ID获取所有管理标签

$services = $this->getConfigurationPool()->getAdminServiceIds();
$container = $this->getConfigurationPool()->getContainer();
$adminLabels = array();
foreach ($services as $key => $val) {
    $admin = $container->get($val);
    $adminLabels['label'][] = $admin->getLabel();
}
echo '<pre>';print_r($adminLabels);echo '</pre>';