【问题标题】:How to get a JSON response without template in eZ Publish?如何在 eZ Publish 中获取没有模板的 JSON 响应?
【发布时间】:2014-07-02 06:44:43
【问题描述】:

我打算在不使用 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 响应?

【问题讨论】:

    标签: json php-5.3 ezpublish


    【解决方案1】:
    echo json_encode( YOUR ARRAY );
    eZExecution::cleanExit();
    

    这就是您在自定义模块/视图 php 文件中返回 json 所需的全部内容。

    【讨论】:

      【解决方案2】:

      如果我是你:

      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. 在布局配置中指定内容类型以匹配您的要求(应用程序/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

      【讨论】:

      • 非常感谢您的帮助 foobar,它工作得很好!
      • 不客气!您介意将您的问题标记为已解决,并将上面的答案标记为好的答案吗? :)
      【解决方案3】:

      要在模块中获得空白页面布局,并设置 json 内容类型,可以在模块 php 文件中添加以下行:

      header("Content-Type: application/json");
      $Result = array();
      $Result['content'] = json_encode($articles);
      $Result['pagelayout'] = false;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多