【问题标题】:Should I make this a Different Module in HMVC Codeigniter?我应该在 HMVC Codeigniter 中将其设为不同的模块吗?
【发布时间】:2011-09-10 12:16:23
【问题描述】:

我刚刚开始在 Codeigniter 中使用 HMVC。主模块是一个名为“博客”的新闻/博客站点。我希望用户能够登录发表评论,所以我有身份验证文件(实际上是坦克身份验证)。现在我还希望用户拥有自己的个人资料页面,其中显示他们的发布统计信息和个人信息。用户还可以拥有一个私人消息系统,他们可以在其中相互发送消息。

作为 HMVC 的新手,我应该如何模块化我的代码?我目前猜测一个不错的会是

  1. 'blog' - 博客/新闻显示
  2. 'auth' - 用户认证
  3. 'users' - 用户资料 + 私信

'blog' 和 'users' 都会调用 'auth',它还会在页面的一角显示一个小部件,显示 注册 |如果未登录,请注册,并欢迎 John!简介 |收件箱 |设置(如果以 John 身份登录)。

或者我应该将“auth”和“users”组合在一起,还是将“users”拆分为“profile”和“messaging”?如果要设计 HMVC 结构,层次结构会是怎样的?

【问题讨论】:

    标签: php model-view-controller codeigniter kohana hmvc


    【解决方案1】:

    这真的取决于你。

    如果您希望有一天评论系统适用于其他模块,请务必将其设为自己的模块。如果它与博客相关,您可以将它作为它自己的控制器留在博客模块中。这也是modules::run()$this->load->module() 可以派上用场的地方,从任何地方调用控制器来获取视图片段,以显示cmets。

    我可能会把所有东西都做成它自己的模块。

    要真正实现 100% 模块化几乎是不可能的,总是存在某些依赖关系。您能做的最好的事情是尝试以对您的特定项目有意义的方式组织它。一般来说,尽可能模块化——如果有一天你决定摆脱博客 cmets,你可以删除 cmets 模块。

    【讨论】:

    • 我对模块化做了一些规划和思考,发现每个 HMVC 模块只能有 1 个控制器?我得出结论是因为模块名称必须与控制器名称/文件名相同。这是真的吗?
    • 这不是真的。您可以拥有任意数量的控制器。例如,“blogs”模块中的“cmets”控制器,通过 url /blogs/comments/comment_method 访问
    • 我现在明白了。换句话说,“auth”模块的默认控制器将是“auth”控制器,可以通过 /blogs/auth 和 /blogs/auth/auth 访问它
    • 您的身份验证模块不应该在您的博客模块中 - 我不确定您的意思是什么 - 所以不。但是,您对第一部分是正确的。默认控制器名称与模块名称匹配,但也可以访问其他控制器。例如,如果我的blogs 模块中有两个控制器,分别称为blogscomments,我可以通过/blogs/comments 访问comments->index()。我知道你正在使用 tank auth,所以你唯一应该做的就是登录和注销以及管理用户。想多解释一下你想做什么?
    • 抱歉,我的 auth 模块不在 blogs 模块中,我错误地将 '/blogs' 包含在示例 url 中。我只是在系统中实现了 tank auth,以允许访问者通过离开 cmets 与站点进行交互,并通过配置文件和私人消息相互交互。谢谢你,解开了我的许多疑惑!
    猜你喜欢
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 2015-06-04
    • 2011-06-30
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2015-11-05
    相关资源
    最近更新 更多