1

データテーブル(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つの主な質問は次のとおりです。

  1. dataTableアクションをコントローラーに配置するのは正しくないようです。A)ロードする必要のあるモデルとフィールドを認識しているため、実際にはコントローラーを必要としないため、B)実際にはユーザーアクションではなく、実際には単なるJSON応答であるため。それで、それはどこに置かれるべきですか?

  2. dataTable()アクションのJSON応答を出力するには、" blank.ctp"ビューとuseを使用しますecho jsonencode($output)。ビューを使用してJSONデータを出力するのは正しくないようです。通常、ビューはユーザー専用ですか?

これらの両方の質問に答える1つの方法は、スタンドアロンdataTable.phpファイルを用意することです。このファイルは、受け取ったモデル名とフィールドに基づいて、関連するJSONデータを出力します。しかし、これはMVCパターンを考えると論理的ではないようです。

コードは現時点では少し厄介です(上記の回答は私がそれを片付けるのに役立つはずです!)が、見る必要がある場合は私に知らせてください。

これが私以外の誰かにとって意味があることを願っています。

4

2 に答える 2

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 に答える
1

このhttps://github.com/cnizzdotcom/cakephp-datatableを処理するCakePHPコンポーネントを作成しました

于 2013-03-29T16:19:36.240 に答える