2010-04-14 3 views
0

Я пытаюсь создать динамическое меню в соответствии с разрешения пользователя данного компонента с ACL в торт PHP ..Cake поколения меню PHP

т.е.., Если пользователь входа в систему, мне нужно, чтобы проверить, какие все действия разрешены для что конкретный пользователь и согласно, что список действий, мне нужно сгенерировать МЕНЮ

может любой помочь мне получить все дозволенные действия от экоса, AROS, acos_aros столы

ответ

1

Пробег: PoundCake Control Panel. Там создается динамическое меню. Он генерирует только те пункты меню, к которым пользователь имеет доступ, на основе acos, aros, acos_aros и таблиц меню. Существует контроллер для полуавтоматического заполнения таблицы меню данными из вашей таблицы acos.

+0

itz a nice tool i пытался ........... , но загрузка этого изделия требует большого времени. – RSK

+0

Сколько времени занимает? Это должно быть только в первый раз, когда вы получаете доступ к странице. Потому что он проверяет права пользователя на каждый пункт меню. Результаты кэшируются. – bancer

1

у меня есть модель AdminMenu, которая определяет мой админ системная навигационная иерархия. Это одинаково для всех пользователей. Структура кэшируется после каждого сохранения. Когда пользователь входит в систему администратора, я извлекаю данные меню из кеша, а также извлекаю все разрешения, которым был предоставлен доступ пользователю. Я делаю это в одном запросе. Подробности: posted here.

Затем я рекурсивно перебираю данные меню, проверяя каждый узел против разрешений для этого пользователя и создавая структуру меню и сохраняя его в сеансе. Эта структура меню содержит только узлы, к которым у зарегистрированного пользователя есть разрешение на доступ, и он генерируется только один раз при входе в систему. Эта структура меню затем отображается с помощью помощника.

Кроме того, разрешения доступны в сеансе, поэтому вы можете проверить, показывать ли ссылки в ваших представлениях или нет, например. только отобразите ссылку, чтобы удалить сообщение, если у них есть разрешение на его удаление.