1 基本响应

1.1 返回一个字符串,指定的字符串会被框架自动转换成 HTTP 响应。
Route::get('/', function () { return 'Hello World'; });
 
1.2 返回一个完整的 Response 实例时,就能够自定义响应的 HTTP 状态码以及标头。
use Illuminate\Http\Response; Route::get('home', function () { return (new Response($content, $status)) ->header('Content-Type', $value); });
为了方便起见,你可以使用辅助函数 response:
Route::get('home', function () { return response($content, $status) ->header('Content-Type', $value); });

2 其它响应类型

2.1 视图响应
如果你想要控制响应状态码及标头,同时也想要返回一个视图作为返回的内容时,则可以使用 view 方法:
return response()->view('hello', $data)->header('Content-Type', $type);
当然,如果你没有自定义 HTTP 状态码及标头的需求,则可以简单的使用全局的 view 辅助函数。
return view('hello',$data);
2.2 JSON 响应
json 方法会自动将标头的 Content-Type 设置为 application/json,并通过 PHP 的 json_encode 函数将指定的数组转换为 JSON:
return response()->json(['name' => 'Abigail', 'state' => 'CA']);
如果你想创建一个 JSONP 响应,则可以使用 json 方法并加上 setCallback:
return response()->json(['name' => 'Abigail', 'state' => 'CA']) ->setCallback($request->input('callback'));
2.3 文件下载
download 方法可以用于生成强制让用户的浏览器下载指定路径文件的响应。download 方法接受文件名称作为方法的第二个参数,此名称为用户下载文件时看见的文件名称。最后,你可以传递一个 HTTP 标头的数组作为第三个参数传入该方法:
return response()->download($pathToFile); return response()->download($pathToFile, $name, $headers);
2.4 在响应发送给用户之前,使用 header 方法增加一系列的标头至响应:
return response($content) ->header('Content-Type', $type) ->header('X-Header-One', 'Header Value') ->header('X-Header-Two', 'Header Value');
或者你可以使用 withHeaders 来设置数组标头:
return response($content) ->withHeaders([ 'Content-Type' => $type, 'X-Header-One' => 'Header Value', 'X-Header-Two' => 'Header Value', ]);
 

3.重定向

3.1 简单重定向
最简单的方式就是通过全局的 redirect 辅助函数:
Route::get('dashboard', function () { return redirect('home/dashboard'); });
有时你可能希望将用户重定向至前一个位置,例如当提交一个无效的表单之后。这时可以使用全局的 back 辅助函数来达成这个目的:
Route::post('user/profile', function () { // 验证该请求... return back()->withInput(); });
3.2 重定向至命名路由
当你调用 redirect 辅助函数且不带任何参数时,将会返回 Illuminate\Routing\Redirector 的实例,你可以对该 Redirector 的实例调用任何方法。举个例子,要生成一个 RedirectResponse 到一个命名路由,你可以使用 route 方法:
return redirect()->route('login');
如果你的路由有参数,则可以将参数放进 route 方法的第二个参数:
// 重定向到以下 URI: profile/{id} return redirect()->route('profile', [1]);
如果你要重定向至路由且路由的参数为 Eloquent 模型的「ID」,则可以直接将模型传入,ID 将会自动被提取:
return redirect()->route('profile', [$user]);
3.3 重定向至控制器行为
请记得,你不需要指定完整的命名空间,因为 Laravel 的 RouteServiceProvider 会自动设置默认的控制器命名空间:
return redirect()->action('HomeController@index');
当然,如果你的控制器路由需要参数的话,你可以传递它们至 action 方法的第二个参数:
return redirect()->action('UserController@profile', [1]);
3.4 重定向并加上 Session 闪存数据
通常重定向至新的 URL 时会一并写入闪存数据至session。所以为了方便,你可以利用链式调用的方式创建一个 RedirectResponse 的实例并闪存数据至 Session。这对于在一个动作之后保存状态消息相当方便:
Route::post('user/profile', function () { // 更新用户的个人数据... return redirect('dashboard')->with('status', 'Profile updated!'); });
当然,在用户重定向至新的页面后,你可以获取并显示session的闪存数据,注意这里闪存的信息和使用使用$request->flash()闪存数据提出方法不同,old('status')是取不到的,要使用session('status')
@if (session('status')) <div class="alert alert-success"> {{ session('status') }} </div> @endif
 
 
 

最新文章

  1. 【JAVA并发编程实战】11、有界缓存的实现
  2. Android笔记:多线程
  3. php 二维数组排序
  4. Log.properties配置详解
  5. Android开发常见错误及技巧
  6. Nginx 禁用IP IP段
  7. php 开启COM组件
  8. XAML中ContentControl,ItemsControl,DataTemplate之间的联系和区别
  9. [C++基础]C++中静态成员函数如何访问非静态成员
  10. Permutations 解答
  11. RDBMS 数据库补丁集补丁号码高速參考-文档 ID 1577380.1
  12. JavaScript实现定点圆周运动
  13. linux下shell命令trap
  14. MyBatis动态SQL与模糊查询
  15. 事件总线(Event Bus)知多少
  16. JdbcTemplate源码解析
  17. 监控c3p0的连接池
  18. [模板]quicksort快速查找、排列算法
  19. 【LeetCode】21.合并两个有序链表
  20. linux命令学习之:ls

热门文章

  1. eCharts图表(polar极坐标图)
  2. C#中Dictionary泛型集合7种常见的用法
  3. 关于第三方dll,ocx开发的思考
  4. elasticSearch 分布式安装
  5. TTTAttributedLabel
  6. ios 几种快速写法
  7. POJ 2392 Space Elevator(多重背包)
  8. 漫谈 Clustering (3): Gaussian Mixture Model
  9. ambari过程中要求各个节点时间同步
  10. 前端小记6——项目中常用的ES6方法