【问题标题】:How I should combine static + non-static content using CakePHP我应该如何使用 CakePHP 组合静态 + 非静态内容
【发布时间】:2012-07-15 08:08:19
【问题描述】:

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

我有 5-6 个静态页面,它们默认为页面控制器提供服务,因此它们通过链接 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的页面制作模型+控制器,然后用

进行路由

Router::connect('/pages/news', array('controller' => 'news', 'action' => 'display'));

我是对的还是有其他更正确的方法?

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

    CakePHP 是一个 MVC 框架,代表:模型、视图、控制器。所以基本上,您发出的每个请求都应该通过一个控制器,该控制器将大致执行以下操作:

    1. 如果请求需要来自 DB 的数据 -> 从模型中获取数据,然后将其传递给视图,其中包含模型中的数据。
    2. 如果请求不需要额外数据,请传递到适当的视图。

    所以要回答您的问题:是的,您需要有一个“新闻”控制器和一个“新闻”模型,并且您需要注册该控制器并将数据从模型中获取后传递给视图。

    【讨论】:

    • redirect 在这里可能不是最好的词(可能被误认为是实际的重定向) - 最好使用“传递到”。但除了那个地方
    • Tahnks,根据你的建议改了
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-17
      • 2013-11-10
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 2014-05-24
      • 1970-01-01
      相关资源
      最近更新 更多