Laravelの$errors
便利ですよね!
でもView以外で使いたいってこともあると思うんです。
そんなときどうすればいいか。
コード追えば一瞬で分かっちゃうんですが、公式マニュアルに記述がないしこのことを言及しているサイトも見当たらなかったのでここに記録します。
公式マニュアルではこう説明されています。
Tip!!
\$errors
変数はwebミドルウェアグループに所属する、Illuminate\View\Middleware\ShareErrorsFromSession
ミドルウェアによりビューに結合されます。このミドルウェアが適用される場合は、いつでもビューの中で\$errors
変数が使えます。\$errors
変数はいつでも定義済みであると想定でき、安心して使えます。
ref. Laravel 5.5 バリデーション バリデーションエラー表示
なるほど。ShareErrorsFromSession
の中身を見てみると、
$this->view->share(
'errors', $request->session()->get('errors') ?: new ViewErrorBag
);
ref. laravel/framework src/Illuminate/View/Middleware/ShareErrorsFromSession.php
これそのままパクればいけますね。
Controllerだったら
public function index(Request)
{
$errors = $request->session()->get('errors');
...
}
でいけるし、Controller以外で使いたければRequestファサード使って
$errors = \Request::session()->get('errors');
でもいいし。
...
余談ですが、$erros
以外に予約されている変数があるのかなと思って眺めたのですが、ぱっと見た感じ$app
、$__env
がview->share()されていましたよっと。