响应输出

多数情况下,不需要关注 Response 对象本身,只需要在控制器的动作中返回数据即可。例如:

  1. namespace app\ctrl\index;
  2. class Index {
  3. public function hello($name = 'baigo') {
  4. return 'Hello, ' . $name . '!';
  5. }
  6. }

由于默认输出是 html,所以直接以 html 页面方式输出响应内容。

如果修改配置文件,设置:

  1. // 默认输出类型
  2. 'var_default' => array(
  3. 'return_type' => 'json',
  4. ),

则输出结果就变成了 JSON 字符串。

为了规范和清晰起见,推荐在控制器最后明确输出类型(毕竟一个确定的请求是有明确输出类型的)。

如果控制器继承了 ginkgo\Ctrl 类,可以直接调用如下方法指定输出类型:

输出类型 快捷方法 对应 Response 类
HTML fetch、display ginkgo\Response
JSON json ginkgo\response\Json
JSONP jsonp ginkgo\response\Jsonp
重定向 redirect ginkgo\response\Redirect

每一种输出类型其实对应了一个不同的 Response 子类,也可以在应用中自定义 Response 子类满足特殊需求的输出。

例如需要输出一个 JSON 数据给客户端(或者 AJAX 请求),可以使用:

  1. namespace app\ctrl\index;
  2. use ginkgo\Ctrl;
  3. class Index extends Ctrl {
  4. public function hello() {
  5. $data = array(
  6. 'name' => 'baigo',
  7. 'status' => '1'
  8. );
  9. return $this->json($data);
  10. }
  11. }

这些方法的返回值都是 Response 类或者子类的实例,所以后续可以调用 Response 基类或者当前子类的相关方法,后面会讲解相关方法。

如果你只需要输出一个 html 格式的内容,可以直接使用

  1. namespace app\ctrl\index;
  2. class Index {
  3. public function hello() {
  4. return 'Hello, baigo!';
  5. }
  6. }