Php 数据库驱动导航中的登录/注销链接?
我有一个数据库驱动的导航,主要由两个表组成:Php 数据库驱动导航中的登录/注销链接?,php,zend-framework,zend-navigation,zend-acl,Php,Zend Framework,Zend Navigation,Zend Acl,我有一个数据库驱动的导航,主要由两个表组成:菜单和一个菜单项,这对于纯“静态”链接很好,但现在我需要一个动态链接(登录/注销) 我的菜单项表只是由指向在管理中手动添加的页面的链接组成。因此,现在我需要调整表和模型,使其能够处理“动态”链接 以下是菜单项表的模式: CREATE TABLE `menu_items` ( `id` int(11) NOT NULL auto_increment, `menu_id` int(11) default NULL, `label` varcha
菜单
和一个菜单项
,这对于纯“静态”链接很好,但现在我需要一个动态链接(登录/注销)
我的菜单项
表只是由指向在管理中手动添加的页面的链接组成。因此,现在我需要调整表和模型,使其能够处理“动态”链接
以下是菜单项表的模式:
CREATE TABLE `menu_items` (
`id` int(11) NOT NULL auto_increment,
`menu_id` int(11) default NULL,
`label` varchar(250) default NULL,
`page_id` int(11) default NULL,
`link` varchar(250) default NULL,
`position` int(11) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8
菜单id对应于另一个表,因此1例如是主导航,2可以是实用导航。位置是指相对于菜单项显示的每个菜单的顺序。链接只是一个字段,例如“/user/login”
我正在循环浏览我的每个菜单,创建导航容器,并为此使用Zend Navigation
这是我用于登录区域的逻辑,我需要将其移到动态导航中:
<?php if($this->identity == null) { ?>
<p><a href='/user/login'>Login</a></p>
<?php }else{ ?>
<p>Welcome back <?php echo $this->identity->first_name;?></p>
<p>To log out <a href='/user/logout'>click here</a></p>
<?php } ?>
欢迎回来
注销
看起来我需要为每个菜单项的访问级别添加一个新列,然后更新我的菜单模型以说明用户是否登录,并查询菜单项的新访问列值,或者沿着这些行进行查询。有人有什么建议吗?我想你可以通过Zend_Acl实现这一点。所有内置导航助手都添加了与ACL和翻译的集成 从
{get | set}Acl(),{get | set}Role(),
获取/设置ACL(Zend_ACL)实例和
角色(字符串或
Zend_Acl_角色_接口)用于
渲染时过滤掉页面,
和{get | set}UseAcl()控制
应启用ACL。方法
hasAcl()和hasRole()检查
帮助程序具有ACL实例或角色
注册的
如果登录的访问者与未登录的访问者(用户与来宾)具有不同的角色,则应该可以这样做。我以前从来没有这样做的必要,所以我不能给你任何代码片段,但请查看关于如何结合两者的视频教程
我仍然不明白你为什么要重构它,因为移动它似乎是一件麻烦的事,而且会增加一些不必要的复杂性,因为它可以在一个单独的视图助手中愉快地生活。所以,为什么不保持简单:)我想您可以通过Zend_Acl实现这一点。所有内置导航助手都添加了与ACL和翻译的集成 从
{get | set}Acl(),{get | set}Role(),
获取/设置ACL(Zend_ACL)实例和
角色(字符串或
Zend_Acl_角色_接口)用于
渲染时过滤掉页面,
和{get | set}UseAcl()控制
应启用ACL。方法
hasAcl()和hasRole()检查
帮助程序具有ACL实例或角色
注册的
如果登录的访问者与未登录的访问者(用户与来宾)具有不同的角色,则应该可以这样做。我以前从来没有这样做的必要,所以我不能给你任何代码片段,但请查看关于如何结合两者的视频教程
我仍然不明白你为什么要重构它,因为移动它似乎是一件麻烦的事,而且会增加一些不必要的复杂性,因为它可以在一个单独的视图助手中愉快地生活。所以,为什么不简单一点:)Gordon的ACL是一条路要走(我投了更高的票)。我只是想插句话,确切地描述一下我的工作 我在导航配置中创建了
登录
和注销
页面:
<user_signin>
<label>Sign in</label>
<other_stuff></other_stuff>
<resource>mvc:user_signin</resource>
<privilege>navigate</privilege>
</user_signin>
<user_signout>
<label>Sign out</label>
<other_stuff></other_stuff>
<resource>mvc:user_signout</resource>
<privilege>navigate</privilege>
</user_signout>
这样,它只是另一种导航,其行为与其他导航一样,只是有一点逻辑性。Gordon的ACL是一种选择(我对它投了更高的票)。我只是想插句话,确切地描述一下我的工作 我在导航配置中创建了
登录
和注销
页面:
<user_signin>
<label>Sign in</label>
<other_stuff></other_stuff>
<resource>mvc:user_signin</resource>
<privilege>navigate</privilege>
</user_signin>
<user_signout>
<label>Sign out</label>
<other_stuff></other_stuff>
<resource>mvc:user_signout</resource>
<privilege>navigate</privilege>
</user_signout>
这样,它只是另一个导航,其行为与其他导航一样,只是有一点逻辑性。为什么要将其移动?它很简单,简洁明了。你能在表中添加一个登录和注销链接,然后动态显示其中一个吗?(除非我已经理解了这个问题)@Gordon-因为我需要它与其他问题一起生成links@Scobal-这基本上就是我要问的问题,是否应该添加配置文件和登录链接,我只是不确定如何重构我的表模式,以便我可以拥有通用的全局链接(主页),未登录时全局显示的链接(登录),以及登录时全局显示的链接(配置文件替换登录)。为什么要将其移动?它很简单,简洁明了。你能在表中添加一个登录和注销链接,然后动态显示其中一个吗?(除非我已经理解了这个问题)@Gordon-因为我需要它与其他问题一起生成links@Scobal-这基本上就是我要问的问题,是否应该添加配置文件和登录链接,我只是不确定如何重构我的表模式,以便我可以拥有通用的全局链接(主页),未登录时全局显示的链接(登录),以及登录时全局显示的链接(配置文件替换登录)。因为这样更灵活。如果说,我想在中间的这个链接,说4个链接,那就是它看起来从左边的5个链接总共第三个而不是在末端,或者在一个单独的区域。嗯,它是你的应用程序,所以你喜欢做什么。我只是觉得对于IF来说,这需要很多重构。如果雅格尼,那么雅格尼:)无论如何,让我知道它是否与Zend_Acl(如果你走这条路)一起工作,因为它会更灵活。如果说,我想在中间的这个链接,说4个链接,那就是它看起来从左边的5个链接总共第三个而不是在末端,或者在一个单独的区域。嗯,它是你的应用程序,所以你喜欢做什么。我只是觉得对于IF来说,这需要很多重构。如果是yagni,那么yagni:)无论如何,请告诉我它是否与Zend_Acl(如果您正走这条路)一起工作,因此您完全依赖xml进行导航?是的。我的海军