一.响应设置
- 路由和控制器处理完业务都会返回一个发送到浏览器的响应:return;
- 比如字符串会直接输出,而数组则会输出 json 格式,本身是 Response 对象;
return [1, 2, 3]; //输出 json 格式
return response([1, 2, 3]); //同上
return response()->json([1, 2, 3]); //同上
- 如果使用 response()输出的话,可以设置状态码和响应头信息;
return response('index', 201); //可以设置 HTTP 请求状态码
- 也可以给 HTTP 添加或修改标头,比如将 html 解析模式改成文本 plain 模式;
return response('<b>index</b>') ->header('Content-Type', 'text/plain'); //文本解析模式
- 结合上面的响应操作,再结合 view()视图功能,显示纯 HTML 代码页面;
return response()->view('task', ['id'=>10], 201)->header('Content-Type', 'text/plain');
二.路由重定向
- 重定向使用助手函数 redirect()的 to()方法,注意需要 return 才能跳转;
return redirect()->to('/'); //跳到首页
return redirect()->to('task'); //跳转到 task
return redirect()->to('task/url'); //跳转到 task/url
- 也可以直接使用快捷方式直接进行跳转;
return redirect('/'); //跳到首页
return redirect('task'); //跳转到 task
return redirect('task/url'); //跳转到 task/url
- redirect()助手有一个对应的 facade 模式对象;
return Redirect::to('/'); //facade 模式,但需要 use 引入
- 使用 redirect()的 route()方法,可以跳转到指定的命名路由 URI;
return redirect()->route('task.index'); //注意和 route()方法区别
- 使用 redirect()的 back()方法,可以重定向到上一个页面中;
return redirect()->back(); return back(); //快捷方式
- 使用 redirect()的 action()方法,可以直接重定向到控制器方法;
return redirect()->action('TaskController@index'); //需注册路由
return redirect()->action('TaskController@index', ['id'=>10]);
- 使用 redirect()的 away()方法,跳转到外部链接;
return redirect()->away('http://www.baidu.com'); //不带任何编码