使用 MVC 方法将 dataTables 与 cakePhp 集成的最佳方式是什么?


what's the best way to integrate dataTables with cakePhp using the MVC approach

我已经完成了一些代码,其中我尝试将数据表(http://datatables.net/)与cakePHP集成。

它与我自己的应用程序一起启动并运行,但我想让它更通用,这样它就可以被任何 cakePhp 应用程序中的任何人使用,最重要的是我希望它适合 cakePHP 约定。

所以目前这就是我所拥有的...

一个名为 dataTables 的 cakePHP 助手,它采用以下参数:$modelName$fields$headers

  • $modelName 是其数据将填充表的模型的名称。
  • $fields是我们想要在表中显示的字段数组(所有字段都必须以"ModelName"开头,这意味着我们可以在表中显示关联的模型值)
  • $headers是我们希望显示在表格顶部的标题列表。

帮助程序生成一个空的 html 表($headers作为标头)。然后,该表由datables的javascript填充(如果您不熟悉dataTables服务器端处理,则可能需要阅读此内容)。

Javascript 从我们想要获取其模型的控制器的dataTable()操作中检索表数据。javascript 还将发送模型名称(我们发送给帮助程序)和字段。然后,控制器打印出 JSON 数据(通过空白视图)

我的两个主要问题是:

  1. 将 dataTable 操作放在控制器中似乎不对。A) 因为它实际上不需要控制器,因为它知道需要加载的模型和字段,B) 因为它不是真正的用户操作,它实际上只是一个 JSON 响应。那么应该放在哪里呢?

  2. 要打印我的dataTable()操作的 JSON 回复,我使用" blank.ctp "视图和使用echo jsonencode($output)。使用视图输出 JSON 数据似乎不对。通常视图只针对用户,对吗?

回答这两个问题的一种方法是拥有一个独立的dataTable.php文件,该文件将根据模型名称和收到的字段打印相关的 JSON 数据。但考虑到 MVC 模式,这种^^似乎不合逻辑。

代码目前有点混乱(上面的答案应该可以帮助我整理它!)但如果需要查看,请告诉我。

希望这对我自己以外的人有意义。

我想了

一会儿,插件似乎是最好的主意。您可以使用组件自动加载帮助程序,并为您提供控制器可见钩子,以便为提供输出的帮助程序/元素设置数据。

使用行为公开 json 的模型函数,然后使用该组件设置数据。

至于你是否应该使用视图 - 这是书中关于 json 视图的部分。

_serialize键是一个特殊的视图变量,指示哪个 使用数据视图时,应序列化其他视图变量。 这允许您跳过为控制器操作定义视图文件,如果 在数据之前,您无需执行任何自定义格式设置。 转换为 JSON/XML。

如果需要对视图进行任何格式化或操作 变量 在生成响应之前,应使用视图文件。 _serialize的值可以是字符串或视图数组 要序列化的变量:

http://book.cakephp.org/2.0/en/views/json-and-xml-views.html#using-data-views-with-the-serialize-key

我写了一个处理这个 https://github.com/cnizzdotcom/cakephp-datatable 的CakePHP Componenent