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