请求和输入

October CMS Documentation Docs

请求和输入

# 基本输入

您可以通过一些简单的方法访问所有用户输入。 使用 Input 门面时,您无需担心请求的 HTTP 谓词,因为所有谓词都以相同的方式访问输入。 全局 input 助手函数Input::get 的别名。 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');

在处理带有"array" 输入的表单时,您可以使用点符号来访问数组:

$input = Input::get('products.0.name');

注意: 某些 JavaScript 库(例如 Backbone)可能会将输入作为 JSON 发送到应用程序。 您可以像往常一样通过 Input::get 访问这些数据。

# Cookies

默认情况下,October CMS 创建的所有 cookie 都经过加密并使用身份验证代码签名,这意味着如果它们被客户端更改,它们将被视为无效。 在 system.unencrypt_cookies 配置键中命名的 cookie 不会被加密。

$value = Cookie::get('name');
$response = Response::make('Hello World');

$response->withCookie(Cookie::make('name', 'value', $minutes));

如果您想在创建响应之前设置 cookie,请使用 Cookie::queue 方法。 cookie 将自动附加到您的应用程序的最终响应中。

Cookie::queue($name, $value, $minutes);
$cookie = Cookie::forever('name', 'value');

如果您不希望某些 cookie 被加密或解密,您可以在配置中指定它们。这很有用,例如,当您想通过 cookie 将数据从前端传递到服务器端后端时,反之亦然

config/system.php 配置文件中的 unencrypt_cookies 参数中添加不应加密或解密的 cookie 名称。

'unencrypt_cookies' => [
    'my_cookie',
],

或者,对于插件,您也可以从插件的Plugin.php动态添加这些。

public function boot()
{
    Config::push('system.unencrypt_cookies', 'my_cookie');
}

# 旧的输入

您可能需要保留一个请求的输入,直到下一个请求。 例如,您可能需要在检查表单是否存在验证错误后重新填充表单。

# 将输入数据闪存到Session

Input::flash();

# 仅闪存Session的某一个值

Input::flashOnly('username', 'email');

Input::flashExcept('password');

由于您经常希望将闪存变量与重定向到上一页相关联,因此您可以轻松地将变量闪存到重定向。

return Redirect::to('form')->withInput();

return Redirect::to('form')->withInput(Input::except('password'));

注意:您可以使用 Session 类在请求中刷新其他数据。.

# 检索旧数据

Input::old('username');

# 文件

# 检索上传的文件

$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();

# 请求信息

Request 类提供了许多检查应用程序 HTTP 请求的方法,并扩展了 Symfony\Component\HttpFoundation\Request 类。这儿是一些精彩片段。

# 检索请求 URI

$uri = Request::path();

# 检索请求方法

$method = Request::method();

if (Request::isMethod('post')) {
    //
}

# 确定请求路径是否匹配模式

if (Request::is('admin/*')) {
    //
}

# 获取请求地址

$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') {
    //
}