Model view controller 为不同的用户类型、MVC、PHP生成导航

Model view controller 为不同的用户类型、MVC、PHP生成导航,model-view-controller,navigation,role-based,Model View Controller,Navigation,Role Based,我的想法是生成一系列用户链接,这些链接将取决于用户角色 用户可以是学生或管理员 我想到的是使用一个foreach循环来生成一个链接列表,该列表只对某些用户可用 我的问题是,我创建了一个名为Navigation的助手类,但我非常确定,我不能硬编码其中的链接,而是希望该助手类只读取从某处发送的对象,然后将所需的导航数组返回到页面 接下来的问题,你认为我应该把那些只对学生和管理员开放的链接放在哪里。我应该把它们保存在一个文本文件中吗 或者,如果可以创建一个传递链接数组的控制器,例如 nav_contr

我的想法是生成一系列用户链接,这些链接将取决于用户角色

用户可以是学生或管理员

我想到的是使用一个
foreach
循环来生成一个链接列表,该列表只对某些用户可用

我的问题是,我创建了一个名为
Navigation
的助手类,但我非常确定,我不能硬编码其中的链接,而是希望该助手类只读取从某处发送的对象,然后将所需的导航数组返回到页面

接下来的问题,你认为我应该把那些只对学生和管理员开放的链接放在哪里。我应该把它们保存在一个文本文件中吗

或者,如果可以创建一个传递链接数组的控制器,例如
nav_controller
class->
studentLinks(){}
中的一个方法将向helper类发送一个链接数组,helper类随后将其发送到视图


对不起,如果我解释得很疯狂的话。你有相关的资源吗?

这取决于你已经在使用什么以及你的项目规模。如果你用的是db-把它放在那里。如果您使用的是xml/json/yaml/whatever,请将其存储在具有相应格式的文件中。如果两个都没有,请硬编码。我的意思是——避免使用多种技术来存储数据。此外,如果链接不会经常更新,用户也无法自定义它们,我会硬编码它们。如果应用程序基本上是静态的,那么为了动态而创建一些非常复杂的东西是没有意义的


注意,这个问题不太适合stackoverflow。programmers.stackexchange.com可能更适合

这取决于您已经使用的内容和项目的规模。如果你用的是db-把它放在那里。如果您使用的是xml/json/yaml/whatever,请将其存储在具有相应格式的文件中。如果两个都没有,请硬编码。我的意思是——避免使用多种技术来存储数据。此外,如果链接不会经常更新,用户也无法自定义它们,我会硬编码它们。如果应用程序基本上是静态的,那么为了动态而创建一些非常复杂的东西是没有意义的


注意,这个问题不太适合stackoverflow。programmers.stackexchange.com可能更适合

从您的描述来看,您似乎正在构建一些与教育相关的系统。以这样的方式创建实现是有意义的,您可以稍后扩展项目。似乎有理由期望在以后添加“选择器”作为角色

再说一遍。。我不确定您对MVC设计模式的了解有多广泛

在这种情况下,我会考虑两种方法来解决这个问题:

  • 查看从模型层请求的当前用户状态,并根据响应请求其他数据。然后view使用管理员模板或用户模板并创建响应

    您可以在模板中硬编码特定的导航项(从中生成响应),或者可用导航项的列表可以是您从模型层请求的附加信息的一部分

    这种方法的缺点是,每次需要添加另一个组时,都必须重写一些(如果不是全部)视图类

  • 将模型层中的结构包装到包含对象(中提供的实现基础)中,这样可以限制返回的数据

    当使用这种方法时,视图总是从模型层请求所有可用信息,但其中一些信息将返回
    null
    ,在这种情况下,模板将不被应用。为了实现这一点,可用导航项的列表必须由模型层提供


  • p.S.正如您可能从本说明中注意到的,视图不是模板,模型也不是类

    从您的描述来看,您似乎正在构建一些与教育相关的系统。以这样的方式创建实现是有意义的,您可以稍后扩展项目。似乎有理由期望在以后添加“选择器”作为角色

    再说一遍。。我不确定您对MVC设计模式的了解有多广泛

    在这种情况下,我会考虑两种方法来解决这个问题:

  • 查看从模型层请求的当前用户状态,并根据响应请求其他数据。然后view使用管理员模板或用户模板并创建响应

    您可以在模板中硬编码特定的导航项(从中生成响应),或者可用导航项的列表可以是您从模型层请求的附加信息的一部分

    这种方法的缺点是,每次需要添加另一个组时,都必须重写一些(如果不是全部)视图类

  • 将模型层中的结构包装到包含对象(中提供的实现基础)中,这样可以限制返回的数据

    当使用这种方法时,视图总是从模型层请求所有可用信息,但其中一些信息将返回
    null
    ,在这种情况下,模板将不被应用。为了实现这一点,可用导航项的列表必须由模型层提供


  • p.S.正如您可能从本说明中注意到的,视图不是模板,模型也不是类

    我非常喜欢你的帖子,你肯定对mvc有深刻的理解。非常感谢,我想这一次我真的需要一位老师,因为我觉得我走错了路。请指导我。我建议你从OOP的一些高级研究开始。试着看下面列出的讲座