70. 请求 旧的输入数据

2017-10-11  本文已影响55人  独步天堂

如果你使用了 Laravel 的 验证特性,你就不需要在手动实现这些方法,因为 Laravel 内置的验证工具会自动调用他们。

将输入数据闪存至 Session

Illuminate\Http\Request 的 flash 方法会将当前输入的数据存进 session 中,因此下次用户发送请求到应用程序时就可以使用它们:

$request->flash();

你也可以使用 flashOnly 和 flashExcept 方法将当前请求数据的子集保存到 session。这些方法对敏感信息的保护非常有用:

$request->flashOnly(['username', 'email']);

$request->flashExcept('password');

闪存输入数据到 Session 后重定向

你可能需要把输入数据闪存到 session 并重定向到前一个页面,这时只需要在重定向方法后加上 withInput 即可:

return redirect('form')->withInput();

return redirect('form')->withInput(
    $request->except('password')
);

获取旧输入数据

若要获取上一次请求后所闪存的输入数据,则可以使用 Request 实例中的 old 方法。old 方法提供一个简便的方式从 Session 取出被闪存的输入数据:

$username = $request->old('username');

Laravel 也提供了全局辅助函数 old。如果你要在 Blade 模板 中显示旧输入数据,可以使用更加方便的 old 辅助函数。如果旧数据不存在,则返回 null:

<input type="text" name="username" value="{{ old('username') }}">

从请求中获取 Cookie 值

Laravel 框架创建的每个 cookie 都会被加密并且加上认证标识,这代表着用户擅自更改的 cookie 都会失效。若要从此次请求获取 cookie 值,你可以使用 Illuminate\Http\Request 实例中的 cookie 方法:

$value = $request->cookie('name');

将 Cookies 附加到响应

你可以使用 cookie 方法附加一个 cookie 到 Illuminate\Http\Response 实例。有效 cookie 应该传递字段名称,字段值和过期时间给这个方法:

return response('Hello World')->cookie(
    'name', 'value', $minutes
);

生成 Cookie 实例

如果你想要在一段时间以后生成一个可以给定 Symfony\Component\HttpFoundation\Cookie 的响应实例,你可以先生成 $cookie 实例,然后再指定给 response 实例,否则这个 cookie 不会被发送回客户端:

$cookie = cookie('name', 'value', $minutes);

return response('Hello World')->cookie($cookie);

上一篇 下一篇

猜你喜欢

热点阅读