1

eZ Publish でビューをレンダリングせずに json レスポンスを取得するつもりです。

だから私はそれを行うためにカスタムモジュールを使用しようとしています:

function jsonConvert(){

     $articles = eZFunctionHandler::execute(
              'content',
              'tree',
              array(
                  'parent_node_id' => '59'
              )
          );

    header("Content-Type: application/json");

    return json_encode($articles);
  }

  echo jsonConvert();

HTMLコードなしでjson応答を取得するために、domain.com/module/view/のようなビューをレンダリングする基本的なURLを使用せずにこのモジュールをコンパイルするにはどうすればよいですか?

4

3 に答える 3

2
echo json_encode( YOUR ARRAY );
eZExecution::cleanExit();

カスタム モジュール/ビュー php ファイルで json を返すために必要なものはこれだけです。

于 2014-05-18T12:49:17.740 に答える
1

モジュールで空白のページレイアウトを取得し、json コンテンツ タイプを設定するには、モジュールの php ファイルに次の行を追加します。

header("Content-Type: application/json");
$Result = array();
$Result['content'] = json_encode($articles);
$Result['pagelayout'] = false;
于 2014-05-16T12:36:37.403 に答える
1

もし私があなたの立場だったら :

  1. 別のレイアウトを使用してコンテンツ ビューをレンダリングできる組み込み機能を使用します。layout.ini.append.php オーバーライド内に新しいレイアウト「MYLAYOUT」を作成します ( https://doc.ez.no/eZ-Publish/Technical-manual/4.x/Reference/Configuration-files/layout.iniを参照)。 )、/layout/set/MYLAYOUT/your/content/uri を使用してビューを呼び出します

  2. 要件に合わせてレイアウト構成でコンテンツ タイプを指定します (コンテンツ タイプとして application/json)。

  3. 基本的に {$module_result.content} のみを含む、新しく作成したレイアウトで使用される pagelayout.tpl テンプレートを作成します

  4. コンテンツを「読み取り可能な」json に変換するテンプレート オペレーターを作成し、コンテンツをレンダリングするテンプレートからそれを呼び出します (おそらく /node/view/full.tpl オーバーライド)。

#4の代替(しかしそれほど魅力的ではない)=>テンプレートでphp関数を呼び出せるようにすることで、テンプレートでjson_encodeを直接呼び出します(https://doc.ez.no/eZ-Publish/Technical-manual/4を参照) .x/Reference/Configuration-files/template.ini/PHP/PHPOperatorList )

于 2014-05-15T08:21:29.700 に答える