本文整理汇总了PHP中CMenu::getMenuItems方法的典型用法代码示例。如果您正苦于以下问题:PHP CMenu::getMenuItems方法的具体用法?PHP CMenu::getMenuItems怎么用?PHP CMenu::getMenuItems使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CMenu
的用法示例。
在下文中一共展示了CMenu::getMenuItems方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getTasksMenu
/**
* Меню задач для текущего пользователя.
* Возвращаются только доступные ему задачи
*
* @static
* @return CMenu
*/
private static function getTasksMenu()
{
if (!self::getCacheMenu()->hasElement("admin_menu")) {
$user = CSession::getCurrentUser();
/**
* Чтобы не выбиваться из общей концепции придется адаптировать существующую таблицу
* задач портала под вывод в виде меню. Также было бы неплохо сделать редактор этой
* гадости в виде такого же простого вида, как и с моими меню
*
* 1. Создадим фиктивную activeRecord из моего меню для ссылки в другое меню
* 2. Берем из таблицы группы меню (из task_menu_names)
* 3. Выберем пункты меню из нужной таблицы и добавим их как обычные пункты.
* 4. Добавим недостающие
* 5. Исключим недоступные текущему пользователю
*
* Обновление от 06.02.2014 - все пункты меню хранятся в базе
*/
// дополнительный пункт "Прочее"
$arr = array();
$arr['id'] = 100000;
$arr['title'] = "Меню админки";
$arr['alias'] = "admin_menu";
$arr['description'] = "Фиктивное меню для отображения задач портала";
$arr['published'] = 1;
$menu = new CMenu(new CActiveRecord($arr));
foreach (CActiveRecordProvider::getWithCondition("task_menu_names", "1=1 order by name desc")->getItems() as $i) {
$arr = $i->getItems();
// адаптер для моей системы меню
$arr['id'] = $arr['id'] + 100000;
$arr['title'] = $arr['name'];
$arr['anchor'] = "#";
$arr['menu_id'] = $menu->getId();
$arr['parent_id'] = 0;
$i->setItems($arr);
$menuItem = new CMenuItem($i);
$menu->addMenuItem($menuItem);
}
// дополнительный пункт "Прочее"
$arr = array();
$arr['id'] = 100000;
$arr['title'] = CUtils::getTextStringInCorrectEncoding("Прочее");
$arr['anchor'] = "#";
$arr['menu_id'] = $menu->getId();
$arr['parent_id'] = 0;
$menuItem = new CMenuItem(new CActiveRecord($arr));
$menu->addMenuItem($menuItem);
foreach (CActiveRecordProvider::getWithCondition("tasks", "hidden=0 order by name asc")->getItems() as $i) {
$arr = $i->getItems();
// адаптер для совместимости с моей системой
$arr['title'] = $arr['name'];
$arr['anchor'] = $arr['url'];
$arr['parent_id'] = $arr['menu_name_id'] + 100000;
$arr['menu_id'] = $menu->getId();
unset($arr['name']);
unset($arr['url']);
unset($arr['menu_name_id']);
unset($arr['hidden']);
unset($arr['kadri_in_task']);
unset($arr['students_in_task']);
unset($arr['comment']);
$i->setItems($arr);
$menuItem = new CMenuItem($i);
$menu->addMenuItem($menuItem);
}
// дополнительный пункт меню "Выход"
$arr = array();
$arr['id'] = 200000;
$arr['title'] = CUtils::getTextStringInCorrectEncoding("Выход");
$arr['anchor'] = "p_administration.php?exit=1";
$arr['menu_id'] = $menu->getId();
$arr['parent_id'] = 0;
$menuItem = new CMenuItem(new CActiveRecord($arr));
$menu->addMenuItem($menuItem);
// теперь исключаем все задачи недоступные текущему пользователю
foreach ($menu->getMenuItems()->getItems() as $menuItem) {
if ($menuItem->getId() < 100000) {
if (!$user->getRoles()->hasElement($menuItem->getId())) {
$menu->getMenuItems()->removeItem($menuItem->getId());
}
}
}
self::getCacheMenu()->add("admin_menu", $menu);
}
return self::getCacheMenu()->getItem("admin_menu");
}