# 响应
### 基本回应
几乎可以使用该页面使用的PHP方法返回响应。这包括[布局执行生命周期](https://octobercms.com/docs/cms/layouts#layout-life-cycle)和[AJAX处理程序定义中](https://octobercms.com/docs/ajax/handlers)包含的所有CMS方法。
#### 从CMS方法返回字符串
从CMS页面,布局或组件方法返回字符串将此时停止该过程并覆盖默认行为,因此此处将显示“ Hello World”字符串而不是显示页面。
~~~
public function onStart()
{
return 'Hello World';
}
~~~
#### 从AJAX处理程序返回字符串
从AJAX处理程序返回字符串将使用默认键将该字符串添加到响应集合中`result`。要求的部分内容仍将包含在响应中。
~~~
public function onDoSomething()
{
return 'Hello World';
// ['result' => 'Hello World']
}
~~~
#### 从路线返回字符串
从[路由定义](https://octobercms.com/docs/services/router)返回字符串将与CMS方法相同,并显示该字符串作为响应。
~~~
Route::get('/', function() {
return 'Hello World';
});
~~~
#### 创建自定义响应
对于更健壮的解决方案,返回一个`Response`对象,该对象提供了多种构建HTTP响应的方法。我们将在本文中进一步探讨该主题。
~~~
$contents = 'Page not found';
$statusCode = 404;
return Response::make($contents, $statusCode);
~~~
### [](https://octobercms.com/docs/services/response-view#attaching-headers-to-responses)将标题附加到响应
请记住,大多数响应方法都是可链接的,可以流畅地构建响应。例如,您可以使用该`header`方法向响应添加一系列标头,然后再将其发送回用户:
~~~
return Response::make($content)
->header('Content-Type', $type)
->header('X-Header-One', 'Header Value')
->header('X-Header-Two', 'Header Value');
~~~
一个实际的例子可能是返回XML响应:
~~~
return Response::make($xmlString)->header('Content-Type', 'text/xml');
~~~
### [](https://octobercms.com/docs/services/response-view#attaching-cookies-to-responses)在响应中附加Cookie
该`withCookie`方法使您可以轻松地将Cookie附加到响应中。例如,您可以使用withCookie方法来生成cookie并将其附加到响应实例:
~~~
return Response::make($content)->withCookie('name', 'value');
~~~
该`withCookie`方法接受其他可选参数,这些参数使您可以进一步自定义cookie的属性:
~~~
->withCookie($name, $value, $minutes, $path, $domain, $secure, $httpOnly)
~~~
### [](https://octobercms.com/docs/services/response-view#other-response-types)其他回应类型
的`Response`立面可被用来方便地生成其它类型的反应的实例。
### [](https://octobercms.com/docs/services/response-view#view-responses)查看回应
如果需要访问`Response`类方法,但想返回[视图](https://octobercms.com/docs/services/response-view#views)作为响应内容,则可以使用该`Response::view`方法以方便使用:
~~~
return Response::view('acme.blog::hello')->header('Content-Type', $type);
~~~
### [](https://octobercms.com/docs/services/response-view#json-responses)JSON回应
该`json`方法将自动将`Content-Type`标头设置为application / json,并使用`json_encode`PHP函数将给定数组转换为JSON:
~~~
return Response::json(['name' => 'Steve', 'state' => 'CA']);
~~~
如果您想创建JSONP响应,则`json`除了可以使用方法之外`setCallback`:
~~~
return Response::json(['name' => 'Steve', 'state' => 'CA'])
->setCallback(Input::get('callback'));
~~~
### [](https://octobercms.com/docs/services/response-view#file-downloads)档案下载
该`download`方法可用于生成响应,该响应强制用户的浏览器在给定路径下下载文件。该`download`方法接受文件名作为该方法的第二个参数,它将确定下载文件的用户看到的文件名。最后,您可以将HTTP标头数组作为该方法的第三个参数传递:
~~~
return Response::download($pathToFile);
return Response::download($pathToFile, $name, $headers);
return Response::download($pathToFile)->deleteFileAfterSend(true);
~~~
> **注意:**管理文件下载的Symfony HttpFoundation要求下载的文件具有ASCII文件名。
### [](https://octobercms.com/docs/services/response-view#redirects)重新导向
重定向响应通常是`Illuminate\Http\RedirectResponse`该类的实例,并且包含将用户重定向到另一个URL所需的适当标头。生成`RedirectResponse`实例的最简单方法是`to`在`Redirect`外观上使用该方法。
~~~
return Redirect::to('user/login');
~~~
### [](https://octobercms.com/docs/services/response-view#redirect-flash-data)返回带有Flash数据的重定向
重定向到新的URL并将[数据刷新到会话](https://octobercms.com/docs/services/session)通常是在同一时间完成的。因此,为方便起见,您可以`RedirectResponse`在单个方法链中创建实例并将数据闪存到会话:
~~~
return Redirect::to('user/login')->with('message', 'Login Failed');
~~~
> **注意:**由于该`with`方法会将数据闪烁到会话,因此您可以使用典型`Session::get`方法来检索数据。
#### [](https://octobercms.com/docs/services/response-view#redirecting-previous-url)重定向到上一个URL
您可能希望将用户重定向到他们以前的位置,例如,在提交表单之后。您可以使用以下`back`方法进行操作:
~~~
return Redirect::back();
return Redirect::back()->withInput();
~~~
#### [](https://octobercms.com/docs/services/response-view#redirecting-current-page)重定向到当前页面
有时您只想刷新当前页面,可以使用以下`refresh`方法:
~~~
return Redirect::refresh();
~~~
### [](https://octobercms.com/docs/services/response-view#response-macros)响应宏
如果要定义可在各种路由和控制器中重复使用的自定义响应,则可以使用以下`Response::macro`方法:
~~~
Response::macro('caps', function($value) {
return Response::make(strtoupper($value));
});
~~~
该`macro`函数接受名称作为其第一个参数,并接受Closure作为其第二个参数。在`Response`类上调用宏名称时,将执行宏的闭包:
~~~
return Response::caps('foo');
~~~
您可以在[插件注册文件](https://octobercms.com/docs/plugin/registration#registration-methods)的`boot`方法中定义宏。另外,插件可以在插件目录中提供一个名为**init.php**的文件,您可以用来放置宏注册。
- 基本说明
- 基本操作
- October cms 安装
- 后台控制器路径
- 图标
- 获取安装网上的插件/主题
- 插件构造器使用
- 定时任务
- October后台控制器
- vscode编辑器
- ajax操作
- 使用
- ajax更新组件
- ajax属性API
- JavaScript API
- ajax综合使用
- 主题
- 多语言主题
- 安装市场主题
- 主题程序处理
- 主题
- 页面
- 部件
- 布局
- 内容
- 组件
- 媒体
- 主题表单操作
- 表单使用
- 表单后端程序处理
- 插件
- 自定义插件
- 插件说明
- 插件导航条
- 插件数据库设置
- 插件的设置管理
- 插件的配置文件config
- 组件
- app服务
- app容器
- 扩展行为
- 缓存
- Collection类
- Lazy Collections
- Collection方法
- 助手函数
- 数组助手函数
- 路径助手函数
- 玄乐助手函数
- 其他助手函数
- 错误与记录
- 事件处理
- HTML页面
- 文件与目录操作
- 散列和加密
- 邮件
- 邮件内容
- 邮件发送
- 分页
- 模板解析器
- 动态解析器语法
- 队列消息
- 请求与输入
- 响应
- 视图
- 路由器
- 配置
- 验证操作
- 处理错误消息
- 错误消息与视图
- 可用的验证规则
- 有条件的验证规则
- 验证数组
- 错误消息
- 自定义验证规则
- 模型操作
- 定义模型与其属性
- 检索模型
- 插入与更新
- 删除模型
- 查询范围
- 事件操作
- 关联操作
- 定义关系
- 关系类型
- 多肽关系
- 关系查询
- 渴望加载
- 插入模型
- 数据库操作
- 基本用法
- 数据表结构
- 查询连贯操作
- 结果检索
- select子句
- 插入更新
- where子句
- 排序,分组,限制和偏移
- 文件附件
- Collection操作
- 属性操作
- 系列化json
- 数据库属性
- 数据库行为
- 控制器
- 后台控制器定义
- 后台页面
- 后台组件
- 后台表单
- 表单组件
- 表单视图
- 表单行为
- 后台列表
- 列表行为
- 列表过滤器
- 可用列类型
- 关系行为
- 关系行为类型
- 扩展关系行为
- 列表排序操作
- 导入导出操作
- 用于与权限
- corlate模板修改
- 修改顶部导航
- laravel问题
- 控制器不存在
- 控制器
- 路由组
- laravel笔记
- laravel 安装
- 伪静态配置
- 依赖注入 & 控制器
- 中间件
- 路由文件
- 视图