- Laravel 允许你将本次的输入数据保留到下一次请求发送前。这个特性在表单验证错误后重新填写表单相当有用。
如果你使用了 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);
网友评论