控制器之Response
响应的常见类型
- 字符串
- 视图
- Json
- 重定向
字符串
public function response()
{
return '浏览器显示字符串';
}
视图
return view('student.section1');
详情请参见:《控制器与视图的基础应用》
响应JSON
通过控制器返回一个JSON,在laravel中实现也非常的简单,在app/Http/Controllers/StudentController.php中,新建一个方法:
public function response()
{
$data = [
'errCode' => 0,
'errMsg' => 'success',
'data' => 'wubin'
];
return response($data);
}
注意,这里的response方法,也有命名空间:
要选择上图红线上方的response方法。同时,在response方法前面,必须要加return。
重定向
实现重定向,需要使用的方法是:redirect()
使用路由名称重定向到指定路由
// 重定向浏览器链接会跳转
return redirect('session2');
重定向到另一个网址
return redirect('https://www.wubin.work');
重定向时携带快闪数据
重定向时带一些信息,但是带的是快闪数据,只有一次,再刷新一下就没有了。
比如我们再新建一个控制器方法:
public function session2()
{
return Session::get('message', '暂无信息');
}
并注册路由(因为要使用Session,所以必须要引入中间件):
Route::group(['middleware' => ['web']], function () {
Route::any('session2', [
'uses' => 'StudentController@session2',
'as' => 'ses2'
]);
});
编辑response方法,让其重定向到session2这个路由:
return redirect('session2')->with('message', '我是带的快闪数据');
当访问response路由时候,会跳转到session2这个路由上,并通过Session::get()获取到了快闪数据,当再次刷新session2时,快闪数据失效。
action带上控制器和方法名进行重定向
return redirect()->action('StudentController@session2')->with('message', '我是带的快闪数据');
通过路由别名进行跳转
return redirect()->route('ses2')->with('message', '带的快闪数据');
返回上一个页面记录
return redirect()->back();