致命的なエラーが発生したときに、メッセージを表示して前のページにリダイレクトしようとしています。
App::fatal(function($exception)
{
return Redirect::back()->with('msg', 'The Message');
}
でメッセージにアクセスしようとしているビューで
Sessions::get('msg')
しかし、何もレンダリングされていません。ここで何か間違ったことをしていますか?
試す
return Redirect::back()->withErrors(['msg' => 'The Message']);
ビュー内でこれを呼び出します
@if($errors->any())
<h4>{{$errors->first()}}</h4>
@endif
Laravel5以降
コントローラ
return redirect()->back()->with('success', 'your message,here');
刃:
@if (\Session::has('success'))
<div class="alert alert-success">
<ul>
<li>{!! \Session::get('success') !!}</li>
</ul>
</div>
@endif
代替アプローチは
コントローラ
use Session;
Session::flash('message', "Special message goes here");
return Redirect::back();
意見
@if (Session::has('message'))
<div class="alert alert-info">{{ Session::get('message') }}</div>
@endif
エラーがあります (スペルミス):
Sessions::get('msg')// an extra 's' on end
次のようにする必要があります。
Session::get('msg')
今はうまくいくはずです。
フラッシュメッセージを設定し、コントローラー機能からリダイレクトするだけです。
session()->flash('msg', 'Successfully done the operation.');
return redirect()->back();
そして、ビュー ブレード ファイルでメッセージを取得できます。
{!! Session::has('msg') ? Session::get("msg") : '' !!}
私はこれをlaravel用に自分で書くのをやめ、あなたのためにすべてを処理するLaracastsパッケージを支持しました。非常に使いやすく、コードをクリーンに保ちます。使い方を説明したlaracastもあります。あなたがしなければならないすべて:
Composer を介してパッケージを取り込みます。
"require": {
"laracasts/flash": "~1.0"
}
app/config/app.php 内にサービス プロバイダーを含めます。
'providers' => [
'Laracasts\Flash\FlashServiceProvider'
];
この同じファイルの下部にファサード エイリアスを追加します。
'aliases' => [
'Flash' => 'Laracasts\Flash\Flash'
];
HTML をビューに取り込みます。
@include('flash::message')
メッセージの右側に閉じるボタンがあります。これは jQuery に依存しているため、ブートストラップの前に追加されていることを確認してください。
オプションの変更:
ブートストラップを使用していない場合、またはフラッシュ メッセージのインクルードをスキップして自分でコードを記述したい場合:
@if (Session::has('flash_notification.message'))
<div class="{{ Session::get('flash_notification.level') }}">
{{ Session::get('flash_notification.message') }}
</div>
@endif
によって取り込まれた HTML を表示したい場合は、@include('flash::message')
で見つけることができますvendor/laracasts/flash/src/views/message.blade.php
。
パーシャルを変更する必要がある場合は、次のようにします。
php artisan view:publish laracasts/flash
2 つのパッケージ ビューは、「app/views/packages/laracasts/flash/」ディレクトリに配置されます。
それは私にとってはうまくいき、Laravelのバージョンは^ 7.0です
コントローラ上
return back()->with('success', 'Succesfully Added');
ブレードファイルについて
@if (session('success'))
<div class="alert alert-success">
{!! session('success') !!}
</div>
@endif
ドキュメントについては、Laravel docを参照してください。
私は同じ問題に直面しましたが、これはうまくいきました。
コントローラ
return Redirect::back()->withInput()->withErrors(array('user_name' => $message));
意見
<div>{{{ $errors->first('user_name') }}}</div>
Laravel3の場合
@giannis christofakisの回答に注意してください。Laravel 3 を使用しているすべてのユーザー向け
return Redirect::back()->withErrors(['msg', 'The Message']);
と:
return Redirect::back()->with_errors(['msg', 'The Message']);