工学1号馆

home

« | 返回首页 | »

ThinkPHP5.0快速入门--响应(Response)

By Wu Yudong on November 10, 2017

Response 对象用于动态响应客户端请示,控制发送给用户的信息,并将动态生成响应。 通常用于输出数据给客户端或者浏览器。

ThinkPHP5 Response 响应对象由 think\Response 类或者子类完成,下面介绍下基本的用法。

自动输出

大多数情况,我们不需要关注 Response 对象本身,只需要在控制器的操作方法中返回数据即可,系统会根据 default_return_type default_ajax_return 配置决定响应输出的类型。
默认的自动响应输出会自动判断是否
AJAX 请求,如果是的话会自动输出 default_ajax_return 配置的输出类型。

namespace app\index\controller;
class Index {
	public function hello() {
		$data=['name'=>'thinkphp','status'=>'1'];
		return $data;
		
	}
}

由于默认是输出 Html 输出,所以访问页面输出结果出现异常

修改配置文件,添加:

'default_return_type'    => 'json',
//'default_return_type'    => 'xml',

就会显示不同的格式

手动输出

在必要的时候,可以手动控制输出类型和参数,这种方式较为灵活。 如果需要指定输出类型,可以通过下面的方式:

class Index {
	public function hello() {
		$data=['name'=>'thinkphp','status'=>'1'];
		return json($data);
		//return xml($data);
	}
}

页面跳转

如果需要进行一些简单的页面操作提示或者重定向,可以引入 traits\controller\Jump ,就可以使用相关页面跳转和重定向方法,下面举一个简单的例子,当页面传入name参数为thinkphp的时候,跳转到欢迎页面,其它情况则跳转到一个guest页面。

class Index {
	use\traits\controller\Jump;
	public function index($name = '') {
		if ('thinkphp' == $name) {
			$this->success ( '欢迎使用ThinkPHP5.0', 'hello' );
		} else {
			$this->error ( '错误的name', 'guest' );
		}
	}
	public function hello() {
		return 'Hello, THinkPHP';
	}
	public function guest() {
		return 'Hello,Guest';
	}
}

这里我们使用use \traits\controller\Jump;引入了一个 Jump trait,这是 PHP5.4 版本的新特性,如果你的控制器类是继承的\think\Controller 的话,系统已经自动为你引入了 \traits\controller\Jump ,无需再次引入。

页面重定向

如果要进行页面重定向跳转,可以使用:

class Index {
	use\traits\controller\Jump;
	public function index($name = '') {
		if ('thinkphp' == $name) {
			$this->redirect('http://thinkphp.cn');
		} else {
			$this->success ( '欢迎使用ThinkPHP5.0', 'hello' );
		}
	}
	public function hello() {
		return 'Hello, THinkPHP';
	}
}

在任何时候(即使没有引入Jump trait的话),我们可以使用系统提供的助手函数redirect函数进行重定向。

class Index {
	public function index($name = '') {
		if ('thinkphp' == $name) {
			return redirect ( 'http://thinkphp.cn' );
		} else {
			return 'Hello, THinkPHP';
		}
	}
}

 

如果文章对您有帮助,欢迎点击下方按钮打赏作者

Comments

No comments yet.
To verify that you are human, please fill in "七"(required)