データテーブル(http://datatables.net/)をcakePHPと統合しようとするコードを少し完成させました。
自分のアプリで稼働していますが、もっと汎用的にしたいので、どのcakePhpアプリケーションでも誰でも使用できます。最も重要なのは、cakePHPの規則に適合させたいことです。
だから今のところこれは私が持っているものです...
dataTables
次の引数を取る、と呼ばれるcakePHPヘルパー:$modelName
、、。$fields
$headers
$modelName
データがテーブルに入力されるモデルの名前です。$fields
は、テーブルに表示するフィールドの配列です(すべてのフィールドの前に「ModelName」を付ける必要があります。これは、関連するモデル値をテーブルに表示できることを意味します)。$headers
テーブルの上部に表示するヘッダーのリストです。
ヘルパーは、空のhtmlテーブル($headers
ヘッダーとして)を生成します。次に、テーブルにdatablesのjavascriptが入力されます(dataTablesのサーバー側処理に慣れていない場合は、これを確認する必要がある場合があります)。
Javascriptは、dataTable()
モデルを取得したいコントローラーのアクションからテーブルデータを取得します。javascriptは、モデル名(ヘルパーに送信したもの)とフィールドも送信します。次に、コントローラーはJSONデータを(空白のビューを介して)出力します
私の2つの主な質問は次のとおりです。
dataTableアクションをコントローラーに配置するのは正しくないようです。A)ロードする必要のあるモデルとフィールドを認識しているため、実際にはコントローラーを必要としないため、B)実際にはユーザーアクションではなく、実際には単なるJSON応答であるため。それで、それはどこに置かれるべきですか?
dataTable()
アクションのJSON応答を出力するには、"blank.ctp
"ビューとuseを使用しますecho jsonencode($output)
。ビューを使用してJSONデータを出力するのは正しくないようです。通常、ビューはユーザー専用ですか?
これらの両方の質問に答える1つの方法は、スタンドアロンdataTable.php
ファイルを用意することです。このファイルは、受け取ったモデル名とフィールドに基づいて、関連するJSONデータを出力します。しかし、これはMVCパターンを考えると論理的ではないようです。
コードは現時点では少し厄介です(上記の回答は私がそれを片付けるのに役立つはずです!)が、見る必要がある場合は私に知らせてください。
これが私以外の誰かにとって意味があることを願っています。