0

テンプレートに Smarty を使用するシステム (ActiveCollab) に取り組んでいます。JSONを出力したいので、それを単独で出力する必要があります...他のクラフトはありません。ただし、対応するアクションの Smarty テンプレート ファイルを提供しないと、JSON を台無しにするエラー出力が表示されます。

ケースバイケースでSmarty出力を無効にする方法を知っている人はいますか? 疑似コードでは、次のようなもの

$this->smarty->disable();

それに失敗した場合、ActiveCollab で出力用のテンプレート ファイルを必要としないようにする方法を知っている人はいますか? または、ActiveCollab 内で使用するために JSON を出力するより良い方法を知っていますか?

私の主な目標は、ActiveCollab 内で jqgrid が使用できるように json を出力することです。

ありがとう。


編集:

die();目的の出力の後に追加するのと同じくらい簡単です。

function bar(){
    echo $myoutput;
    die();
}

それでおしまい。解決策が非常に基本的なものであり、決してわからないのに、なぜ私は常に「難しい」答えを探すのですか...ため息

4

1 に答える 1

1

activeCollab は、アクション自体が実行を終了する前に終了を提供しなかった場合にのみ、ページ コンテンツの周囲にページ レイアウトを自動的にレンダリングします。この出口は次の可能性があります。

  1. いくつかのデータを提供する$this->serveData()
  2. ページのリダイレクト
  3. コンテンツの単純な印刷 + die()
  4. ファイル転送、使用download_file()およびdownload_content()機能
  5. アクションの実行を停止する (その中で死ぬ) その他の存在

あなたの場合、コントローラーのserveData()メソッドを使用して JSON を提供できます。

function action() {
  $my_json_data = array('something');

  $this->serveData($my_json_data, null, FORMAT_JSON);
}

この関数は、適切な HTTP ヘッダーを設定し、送信する値をエンコードします。

于 2011-12-01T10:11:02.483 に答える