如何用cakePHP/MVC框架构建控制面板


How to build a controll panel with cakePHP/MVC frameworks

我正在用CakePHP为测试项目构建一个简单的虚拟学习环境(VLE)系统。该项目包含以下内容:

    <
  • 课程/gh>
  • 答案

我已经为课程和课程制作了控制器、模型和视图,我可以向课程添加和删除课程。我一般都遵循cakephp博客教程,并随着我的前进而改变。

然而,这给我留下了一个非常严格的内容、页面和URL结构(我知道如何改变URL,使其对用户和搜索引擎优化更友好)。我的页面都是/{controller}/{method}

项目的一部分是为课程创建一个管理面板。在页面上,您可以看到课程,以及分配给该课程的学生,并提供添加/编辑这些课程的链接。

我不知道如何把几个模型组合成一个管理风格的页面。我可以想到一些方法来做到这一点,可能涉及cakePHP页面或路由,并将一个模型数据带入另一个控制器以使其进入视图。然而我试图找出这样做cakePHP的正确方法或失败,在MVC框架一般。

我很抱歉,如果这是在任何明显的地方,但我已经看过了,还没有找到任何答案,涵盖我的问题是一个布局时尚。不幸的是,我真的需要这个为我拼出来,因为我只是被很多MVC淹没了,没有人问,只在CMS系统中工作过。

创建一个名为"DashboardsController"或类似的控制器。

在它的动作中,你可以加载任何你想要的模型,然后像在相应的控制器中一样使用它:

$this->loadModel('Course');
$courses = $this->Course->find('all');
$this->set(compact('courses'));

这是一个非常常见的问题/解决方案,我相信几年前我自己也在这里问过同样的问题(尽管我找不到)。您仍然保留MVC结构,因为它仍然充当控制器-它只是访问来自不同模型的方法。

调用的不仅仅是你所处的控制器的模型,这是非常常见的,所以在这种情况下,你只需加载你想要/需要的任何模型。

你也可以创建一个Dashboard.php模型,只需设置

$useTable = false;

告诉它你不需要一个"dashboards"表。

我几乎在我做的每个项目中都有一个这些"通用"控制器,我真的不确定还有其他更好的方法来处理它。在我看来,这似乎是最干净、最简单、最合乎逻辑的方法。