我正在开发一个权限系统,我希望获得有关Sonata中加载的所有管理类的信息。 我通过
列出了所有这些课程$this->getConfigurationPool()->getAdminClassas();
我想为这些服务获取定义的标签(组/标签)。
谢谢!
答案 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>';