1

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

它在我自己的应用程序中启动并运行,但我想让它更通用,因此任何人都可以在任何 cakePhp 应用程序中使用它,最重要的是我希望它符合 cakePHP 约定。

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

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

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

助手生成一个空的 html 表(带有$headersas 标题)。然后由 datatables 的 javascript 填充该表(如果您不熟悉 dataTables 服务器端处理,则可能需要阅读此内容)。

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

我的两个主要问题是:

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

  2. 要为我的操作打印 JSON 响应dataTable(),我使用 " blank.ctp" 视图和使用echo jsonencode($output). 使用视图输出 JSON 数据似乎不太合适。通常视图仅适用于用户,对吗?

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

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

希望这对我自己以外的其他人有意义..

4

2 回答 2

1

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

于 2013-03-29T16:19:36.240 回答
1

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

使用行为为您的 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

于 2012-04-15T04:32:31.140 回答