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();

如何在不使用呈现 domain.com/module/view/ 之类的视图的基本 URL 的情况下编译此模块,以便在没有任何 HTML 代码的情况下获得 json 响应?

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. 创建一个 pagelayout.tpl 模板,供您新创建的布局使用,该模板基本上只包含 {$module_result.content}

  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 回答