PHP MVC - 分离管理控制的约定

时间:2016-01-28 16:28:03

标签: php codeigniter model-view-controller

我终于开始进入PHP的模型 - 视图 - 控制器框架编码(而且除此之外,它比内联意大利面条更好)。我正在使用CodeIgniter框架。我的问题涉及使用两个不同的控制器来影响同一模型的惯例。

我有一个本网站的目录部分,一般而言,它由目录控制器控制得足够恰当。但是,我还编写了添加,编辑或删除目录中条目的管理功能。一般来说,管理控制器正在处理管理功能。

所以我的问题是:如果我试图让管理员能够编辑目录,那么正确或接受的约定是将该功能添加到Catalog控制器还是Admin控制器?是否建议使用单独的Admin控制器?显然这两种方法都有效,甚至可能没有被接受的约定,但我想检查一下。

编辑:再一次,在一个完全合法的问题上投票。请至少告诉我为什么我的完全合理的问题值得投票而不是答案。

再次编辑:感谢StackOverflow基于巨魔投票的完全asinine自动禁令,这再一次,完美合理 - 问题导致我的帐户被禁止进一步的问题!我想借此机会说:也许一个据说围绕Q和A建立的社区可以让自己不那么讨厌这些问题?空无一物。错误。有了这个问题。但是一些社区纳粹巡逻队员认为他们并不喜欢它,并且热潮,我没有问起开发社区的任何问题。

2 个答案:

答案 0 :(得分:1)

  

所以我的问题是:如果我试图让管理员能够进行编辑   目录,适当或接受的惯例是否应添加   Catalog控制器或Admin控制器的功能?   是否建议使用单独的Admin控制器?

管理员功能应始终位于单独的控制器中。切勿将管理工具与服务于公共网站的控制器混合使用。

在您的管理控制器的构造函数中 - 您将检查以确保其是经过验证的管理员 - 或者您将其退出。换句话说,他们根本没有进入控制器,然后你不必在所有方法中检查有效的管理员。

管理员视图文件应始终与网站视图文件分开,再次因为您已检查有效登录,您不必签入视图文件。

您的管理目录控制器可以从网站使用的同一模型中提取数据。从技术上讲,你也可以将管理方法放在那里。但我强烈建议你把它们分开。换句话说,您将拥有具有管理工具的模型,并且这些模型仅由管理员控制器访问。

答案 1 :(得分:0)

您应该调用Catalog_model来处理编辑内容的功能。这个模型比需要模型的控制器调用。