Laravel 8:如何在PHP代码(非Blade模板)中获取会话闪存错误
在Laravel的PHP代码中获取验证闪存错误
当你通过request()->validate($rules)触发验证失败后,Laravel会将错误信息闪存到会话中。在PHP类文件(如控制器、服务类)里,可通过以下几种方式获取这些错误:
1. 使用Session门面
直接借助Session门面读取闪存的错误数据:
use Illuminate\Support\Facades\Session; // 获取完整的错误对象 $errors = Session::get('errors'); // 获取指定字段的错误列表,例如email字段 $emailErrors = Session::get('errors')->get('email'); // 获取所有错误消息的数组形式 $allErrors = Session::get('errors')->toArray();
2. 依赖注入Session实例
在类的构造函数或方法中注入SessionInterface实例来操作会话:
use Illuminate\Session\SessionInterface; class YourCustomClass { protected $session; public function __construct(SessionInterface $session) { $this->session = $session; } public function fetchValidationErrors() { $errorBag = $this->session->get('errors'); return $errorBag ? $errorBag->all() : []; } }
3. 通过Request实例获取
如果能拿到当前请求实例,可直接从请求的会话中读取错误:
use Illuminate\Http\Request; public function someMethod(Request $request) { $errorBag = $request->session()->get('errors'); // 获取所有错误消息的字符串数组 $errorMessages = $errorBag ? $errorBag->all() : []; }
注意:闪存的错误仅在下一次请求中有效,属于一次性数据。若需保留可调用Session::reflash()重新闪存。
内容的提问来源于stack exchange,提问作者asdflkadslkfadsfjasdadsfsad
相关产品推荐
相关产品推荐

