【问题标题】:How in one controller return HTML or JSON(PHP)如何在一个控制器中返回 HTML 或 JSON(PHP)
【发布时间】:2012-06-13 09:33:14
【问题描述】:

我有一个 Yii 网站,有两个页面 site.com/user/createsite.com/user/create.json

我需要为两个页面设置一个控制器。

  1. 我如何为这些创建路线 - 我试过 <controller:\w+>/<action:\w+>.json'=>'<controller>/<action>) 但没有帮助
  2. 如何在控制器中识别请求是针对 JSON 还是 HTML - 我尝试过 $_SERVER['CONTENT_TYPE'],在 REST 客户端中没问题,但在浏览器中我收到了 PHP 通知 Undefined index: CONTENT_TYPE

【问题讨论】:

  • 要绕过Undefined index: CONTENT_TYPE,您可以执行$type = !empty($_SERVER['CONTENT_TYPE']) ? $_SERVER['CONTENT_TYPE'] : 'text/html'; 之类的操作来消除错误并默认为浏览器的text/html - 但老实说,请求的内容类型可能会不相关,您最好使用 URL 中的差异来确定响应的内容类型。

标签: php json rest yii


【解决方案1】:

至少有两种方法:

  1. Yii::app()->request->getRequestUri(); 将为您提供请求 URI - 最后检查它的 .json 扩展名。您在问题中的路由规则应该可以工作,并将请求发送给正确的控制器和操作。
  2. 你可以这样制定路由规则:

    <controller:\w+>/<action:\w+>.json'=>'<controller>/<action>/format/json
    

    然后检查您的操作中的format 参数。

我建议第二种方式,因为它是可扩展的。

【讨论】:

    猜你喜欢
    • 2015-10-19
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    • 2010-09-18
    • 1970-01-01
    • 2016-12-06
    相关资源
    最近更新 更多