我已经完成了一些代码,尝试将数据表 (http://datatables.net/) 与 cakePHP 集成。
它在我自己的应用程序中启动并运行,但我想让它更通用,因此任何人都可以在任何 cakePhp 应用程序中使用它,最重要的是我希望它符合 cakePHP 约定。
所以目前这就是我所拥有的......
一个名为 的 cakePHP 助手dataTables
,它接受以下参数:$modelName
, $fields
, $headers
.
$modelName
是将其数据填充到表中的模型的名称。$fields
是我们要在表中显示的字段数组(所有字段必须以“ModelName”开头。这意味着我们可以在表中显示关联的模型值)$headers
是我们希望在表格顶部显示的标题列表。
助手生成一个空的 html 表(带有$headers
as 标题)。然后由 datatables 的 javascript 填充该表(如果您不熟悉 dataTables 服务器端处理,则可能需要阅读此内容)。
dataTable()
Javascript 从我们想要获取其模型的控制器的操作中检索表数据。javascript 还将发送模型名称(我们发送给助手)和字段。然后控制器打印出 JSON 数据(通过空白视图)
我的两个主要问题是:
将 dataTable 操作放在控制器中似乎不正确。A)因为它实际上并不需要控制器,因为它知道需要加载哪些模型和字段;B)因为它不是真正的用户操作,它实际上只是一个 JSON 响应。那么应该放在哪里呢?
要为我的操作打印 JSON 响应
dataTable()
,我使用 "blank.ctp
" 视图和使用echo jsonencode($output)
. 使用视图输出 JSON 数据似乎不太合适。通常视图仅适用于用户,对吗?
回答这两个问题的一种方法是拥有一个独立dataTable.php
文件,该文件将根据模型名称和它接收的字段打印相关的 JSON 数据。但是考虑到 MVC 模式,这 ^^ 似乎不合逻辑。
目前代码有点乱(上面的答案应该可以帮助我整理它!)但如果需要请告诉我。
希望这对我自己以外的其他人有意义..