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
 
 
 

laravel5.2总结--响应的更多相关文章

  1. Laravel5.1 响应

    上篇笔记刚刚记录完请求 这节就来说说响应,一般来说啊 一个请求对应一个响应,用户都请求咱了 咱必须做一些逻辑后给人家反馈是不是,这就是响应. 1 基本的响应 我们前几篇笔记已经用过很多响应了,其中包括 ...

  2. Laravel5.1学习笔记6 响应

    基本响应 附加头信息到响应 附加Cookie到响应 其他响应 View视图响应 JSON响应 File下载 重定向 重定向到命名路由 重定向到控制器Action 附带闪回Session数据重定向 响应 ...

  3. Laravel5.0学习--02 实例进阶

    本文以laravel5.0.22为例. 本节以新建一个简单的博客作为实例. 准备工作 数据库配置 .env文件(也可以直接修改config/database.php) DB_HOST=localhos ...

  4. Laravel5.5 邮件驱动使用 SMTP 驱动实现邮件发送

    laravel5.5 邮件驱动 Laravel 支持多种邮件驱动,包括 smtp.Mailgun.Maildrill.Amazon SES.mail 和 sendmail.Mailgun . Mail ...

  5. Laravel5 快速认证逻辑流程分析

    Laravel5本身自带一套用户认证功能,只需在新项目下,使用命令行php artisan make:auth 和 php artisan migrate就可以使用自带的快速认证功能. 以下为分析登录 ...

  6. Laravel5:重定向 redirect 函数的详细使用

    Laravel5 中新增了一个函数 redirect() 来代替 Laravel4 中 Redirect::to() 来进行重定向操作.函数 redirect() 可以将用户重定向到不同的页面或动作, ...

  7. laravel5.5 dingo/api+jwt-auth

    因为laravel5.5 具有发现包功能,只要包做了兼容laravel5.5就可以不用在config/app.php添加额外代码了. 集成dingo/api github:https://github ...

  8. 【Laravel5】 定制错误页面

    laravel5   所有异常错误都由类   App\Exceptions\Handler    处理,该类包含两个方法:   report   和   render . 这里我们只看 render  ...

  9. Dingo Api 1.0在laravel5.2中的简单应用

    Dingo Api是为基于laravel的开发提供了一系列工具集,这些工具集可以帮助开发者快速构建API.Dingo Api最新的版本是2.0.0-alpha1,这个版本需要php7.0以上的php版 ...

随机推荐

  1. SID1190471 / 烦人的幻灯片 暴力出奇迹 !!!!!!!!!!!!!!!!!!

    PID221 / 烦人的幻灯片 ☆ 提交你的代码 查看讨论和题解 你还木有做过哦 我的状态         查看最后一次评测记录 质量还不能统计出来哦~ 题目评价 质量 无 ★★★★★ ★★★★☆ ★ ...

  2. <Android 基础(五)> MVVM

    介绍 MVVM,Model-View-ViewModel,与上次讲的MVP模式比较的类似,MVP中需要大量的接口文件,而MVVM模式下,View和ViewModel直接关联,使用上比较方便,简化了代码 ...

  3. SQL Server date 设置默认值

    根据时间做数据统计计算最讨厌开始和结束时间字段是NULL,为了处理NULL要写很多语句. 那么在数据库设计的时候给一个默认值:0001-01-01和9999-12-31,会给开发人员带来很大的便利. ...

  4. LeetCode Find Peak Element 找临时最大值

    Status: AcceptedRuntime: 9 ms 题意:给一个数组,用Vector容器装的,要求找到一个临时最高点,可以假设有num[-1]和num[n]两个元素,都是无穷小,那么当只有一个 ...

  5. Struts动态联动效果

    <%@page contentType="text/html;charset=utf-8"%> <%@ include file="../../comm ...

  6. CentOS 7+ 环境下安装MySQL

    在CentOS中默认安装有MariaDB,但是我们需要的是MySQL,安装MySQL可以覆盖MariaDB MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 ...

  7. (78)zabbix值缓存(value cache)说明

    在zabbix-2.2版本之前,zabbix计算trigger与calculated/aggregate值都是直接通过sql语句查询并处理出来的结果,为了提高这块的性能与效率,zabbix引入了val ...

  8. 精致的系统监控工具-netdata

    今天在网上瞎逛,偶然发现一款监控工具:netdata,感到一惊,监控工具竟然可以这么漂亮! 简单了解一下,这款工具还算比较新,监控系统运行状态的功能非常强大,除了监控cpu,网卡,磁盘,内存,进程等等 ...

  9. goaccess 安装

    今天尝试搭建goaccess,用于分析access.log文件,但安装并不顺利,小记一下自己遇到的问题及解决方法 系统环境:CentOS release 6.9 一.参照官网教程进行搭建 $ wget ...

  10. jsp中的文件上传

    首先需要有以下的jar包 jsp代码如下: <!-- ${pageContext.request.contextPath}为: "/" + 当前项目名 --> < ...