我应该如何使用CakePHP组合静态和非静态内容


How I should combine static + non-static content using CakePHP

我对Cake很陌生,不完全理解如何组合内容。

我有5-6个静态页面,它们默认为pages Controller服务,所以它们是通过链接example.com/pages/page_name打开的,我只为它们创建了视图。

但对于其中的一些页面,我想添加CRUD功能。

For example:
  example.com/pages/index - static
  example.com/pages/news - have CRUD
  example.com/pages/about - static
  etc.

我如何看待这个问题的解决方案:1.为需要CRUD的页面制作模型+控制器,然后使用进行路由

路由器::连接('/pages/news',数组('controller'=>'news','action'=>'display');

我是对的,还是有一种不同的、更正确的方式?

CakePHP是一个MVC框架,代表:Model、View、Controller。因此,基本上,你提出的每一个请求都应该通过一个控制器,该控制器将大致执行以下操作:
  1. 若请求需要DB中的数据,则从Model中获取数据,并将其与模型中的数据一起传递给视图
  2. 如果请求不需要额外的数据,请传递到适当的视图

因此,要回答您的问题:是的,您需要有一个"新闻"控制器和一个"消息"模型,并且您需要注册该控制器,并在从模型中获得数据后将数据传递给视图。

将PagesController从cake/libs/controllers目录复制到您的app/controller目录中,并像使用任何其他控制器一样使用它。您可以在其中创建一个function news来加载模型($this->loadModel()),或者像任何常规控制器一样,在PagesController中通常只包含一个模型。

制作一个专用的NewsController可能是一个更好的主意,但这取决于你自己以及你想如何组织你的应用程序。正如您所说,如果更有意义的话,您可以将指向NewsController的URL"别名"为其他内容。