🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 请求与输入 ### 基本输入 您可以使用一些简单的方法访问所有用户输入。使用`Input`外观时,您无需担心请求的HTTP动词,因为对所有动词的输入方式都是相同的。全局`input`[帮助器函数](https://octobercms.com/docs/services/helpers)是的别名`Input::get`。 #### 检索输入值 ~~~ $name = Input::get('name'); ~~~ #### 如果输入值不存在,则检索默认值 ~~~ $name = Input::get('name', 'Sally'); ~~~ #### 确定是否存在输入值 ~~~ if (Input::has('name')) { // } ~~~ #### 获取请求的所有输入 ~~~ $input = Input::all(); ~~~ #### 仅获取部分请求输入 ~~~ $input = Input::only('username', 'password'); $input = Input::except('credit_card'); ~~~ 当使用带有“数组”输入的表单时,可以使用点符号来访问数组: ~~~ $input = Input::get('products.0.name'); ~~~ > **注意:**某些JavaScript库(例如Backbone)可能会将输入作为JSON发送到应用程序。您可以像平常一样通过访问此数据`Input::get`。 ### [](https://octobercms.com/docs/services/request-input#cookies)饼干 默认情况下,十月份创建的所有cookie均会加密并使用身份验证代码签名,这意味着如果客户端更改了它们,它们将被视为无效。`cookie.unencryptedCookies`配置密钥中命名的Cookies将不会被加密。 > **注意:**Cookie是使用APP\_KEY加密的,因此,如果客户端知道APP\_KEY,则有可能由客户端制作Cookie。如果您的应用程序的加密密钥在恶意方的手中,则该方可以使用该加密密钥来制作Cookie值,并利用继承给PHP对象序列化/反序列化的漏洞,例如在应用程序内调用任意类方法。为了缓解这种情况,请在怀疑您的APP\_KEY受到威胁时始终旋转它,并确保在使用前始终确保从cookie接收到的数据与您期望的一样。 #### 检索Cookie值 ~~~ $value = Cookie::get('name'); ~~~ #### 将新的Cookie附加到响应 ~~~ $response = Response::make('Hello World'); $response->withCookie(Cookie::make('name', 'value', $minutes)); ~~~ #### 为下一个响应排队一个cookie 如果要在创建响应之前设置cookie,请使用`Cookie::queue`方法。Cookie将自动附加到您的应用程序的最终响应中。 ~~~ Cookie::queue($name, $value, $minutes); ~~~ #### 创建一个永久存在的cookie ~~~ $cookie = Cookie::forever('name', 'value'); ~~~ #### 未经加密处理cookie 如果您不希望对某些Cookie进行加密或解密,则可以在配置中指定它们。例如,当您想通过Cookie将数据从前端传递到服务器端后端,反之亦然时,这很有用。 将不应加密或解密的cookie名称添加到配置文件中的`unencryptedCookies`参数`config/cookie.php`。 ~~~ /* |-------------------------------------------------------------------------- | Cookies without encryption |-------------------------------------------------------------------------- | | OctoberCMS encrypts/decrypts cookies by default. You can specify cookies | that should not be encrypted or decrypted here. This is useful, for | example, when you want to pass data from frontend to server side backend | via cookies, and vice versa. | */ 'unencryptedCookies' => [ 'my_cookie', ], ~~~ 另外,对于插件,您也可以从`Plugin.php`插件中动态添加这些插件。 ~~~ public function boot() { Config::push('cookie.unencryptedCookies', "my_cookie"); } ~~~ ### [](https://octobercms.com/docs/services/request-input#old-input)旧输入 您可能需要保留一个请求的输入,直到下一个请求。例如,检查表单中的验证错误后,您可能需要重新填充表单。 #### 将输入闪烁到会话 ~~~ Input::flash(); ~~~ #### 仅将部分输入闪烁 ~~~ Input::flashOnly('username', 'email'); Input::flashExcept('password'); ~~~ 由于您通常希望将输入的Flash与重定向到上一页相关联,因此您可以轻松地将输入的Flash链接到重定向。 ~~~ return Redirect::to('form')->withInput(); return Redirect::to('form')->withInput(Input::except('password')); ~~~ > **注意:**您可以使用[Session](https://octobercms.com/docs/services/session)类跨请求刷新其他数据。 #### 检索旧数据 ~~~ Input::old('username'); ~~~ ### [](https://octobercms.com/docs/services/request-input#files)档案 #### 检索上传的文件 ~~~ $file = Input::file('photo'); ~~~ #### 确定是否上传了文件 ~~~ if (Input::hasFile('photo')) { // } ~~~ 该`file`方法返回的对象是`Symfony\Component\HttpFoundation\File\UploadedFile`该类的实例,该类扩展了PHP`SplFileInfo`类并提供了多种与文件进行交互的方法。 #### 确定上传的文件是否有效 ~~~ if (Input::file('photo')->isValid()) { // } ~~~ #### 移动上传的文件 ~~~ Input::file('photo')->move($destinationPath); Input::file('photo')->move($destinationPath, $fileName); ~~~ #### 检索上传文件的路径 ~~~ $path = Input::file('photo')->getRealPath(); ~~~ #### 检索上传文件的原始名称 ~~~ $name = Input::file('photo')->getClientOriginalName(); ~~~ #### 检索上传文件的扩展名 ~~~ $extension = Input::file('photo')->getClientOriginalExtension(); ~~~ #### 检索上传文件的大小 ~~~ $size = Input::file('photo')->getSize(); ~~~ #### 检索上传文件的MIME类型 ~~~ $mime = Input::file('photo')->getMimeType(); ~~~ ### [](https://octobercms.com/docs/services/request-input#request-information)索取资料 本`Request`类提供了检查您的应用程序的HTTP请求许多方法和扩展`Symfony\Component\HttpFoundation\Request`类。这儿是一些精彩片段。 #### 检索请求URI ~~~ $uri = Request::path(); ~~~ #### 检索请求方法 ~~~ $method = Request::method(); if (Request::isMethod('post')) { // } ~~~ #### 确定请求路径是否与模式匹配 ~~~ if (Request::is('admin/*')) { // } ~~~ #### 获取请求URL ~~~ $url = Request::url(); ~~~ #### 检索请求URI段 ~~~ $segment = Request::segment(1); ~~~ #### 检索请求标头 ~~~ $value = Request::header('Content-Type'); ~~~ #### 从$ \_SERVER检索值 ~~~ $value = Request::server('PATH_INFO'); ~~~ #### 确定请求是否通过HTTPS ~~~ if (Request::secure()) { // } ~~~ #### 确定请求是否正在使用AJAX ~~~ if (Request::ajax()) { // } ~~~ #### 确定请求是否具有JSON内容类型 ~~~ if (Request::isJson()) { // } ~~~ #### 确定请求是否要求JSON ~~~ if (Request::wantsJson()) { // } ~~~ #### 检查请求的响应格式 该`Request::format`方法将基于HTTP Accept标头返回请求的响应格式: ~~~ if (Request::format() == 'json') { // } ~~~