我有一个用于创建用户的页面。 我想在创建用户时通过包含所有导航菜单项的列表来指定他有权从导航菜单中查看的项目
我尝试使用 apex_application_list_entries 来做到这一点
有人可以帮助我吗?
在我看来,我不喜欢你的做法。
考虑授权。
admin
(会看到所有内容)、manager
(会看到很多东西,但不是全部)、clerk
(只会看到与工作相关的内容)等.:APP_USER
并返回他们的角色这样做,您不必让每个用户看到任何特定页面本身 - 授权会处理它。
请注意:如果 Apex 应用程序有 150 个页面,您将必须为每个新用户逐一选择任意数量的页面,并且不能保证您会记住哪些页面确切属于假定的页面集由该用户访问。
您可以创建动态列表,然后将其设置为应用程序共享组件中的导航菜单列表。
您可以使用以下查询从数据库架构中获取列表项。
select level level_value,
menu_name label_value,
apex_page.get_url(p_page => module_id) target_value,
null is_current,
icon_html image_value
from (
select distinct(menu_id), parent_menu_id, module_id, menu_name, icon_html, menu_seq
from system_menu
where user_id = :APEX_USER_ID
)
START WITH parent_menu_id IS null
CONNECT BY PRIOR menu_id = parent_menu_id
ORDER SIBLINGS BY MENU_SEQ
system_menu表ddl描述为:
CREATE TABLE "SYSTEM_MENU"
( "MENU_ID" NUMBER NOT NULL ENABLE,
"PARENT_MENU_ID" NUMBER,
"MODULE_ID" NUMBER,
"NAME_AR" NVARCHAR2(255) NOT NULL ENABLE,
"NAME_EN" NVARCHAR2(255),
"ICON_HTML" NVARCHAR2(255),
"IS_NUMBER" NUMBER(22,1),
"USER_ID" VARCHAR2(255),
"MENU_SEQ" NUMBER,
CONSTRAINT "H_SYSTEM_MENU_PK" PRIMARY KEY ("MENU_ID")
USING INDEX ENABLE
)
要了解有关动态列表的更多信息,请阅读此 ORACLE APEX 文档 页