如何在一个控制器中返回HTML或JSON(PHP)

时间:2012-06-13 09:33:14

标签: php json rest yii

我有一个包含2页site.com/user/createsite.com/user/create.json

的Yii网站

我需要为两个页面都安装一个控制器。

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

1 个答案:

答案 0 :(得分:2)

至少有两种方法:

  1. Yii::app()->request->getRequestUri();将获取请求URI - 最后检查它是否为.json扩展名。您的问题中的路由规则应该有效,并将请求发送给正确的控制器和操作。
  2. 您可以制定如下的路由规则:

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

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

  3. 我建议采用第二种方式,因为它可以扩展。