回答:
試す
return Redirect::back()->withErrors(['msg', 'The Message']);
そしてあなたの見解の中でこれを呼んでください
@if($errors->any())
<h4>{{$errors->first()}}</h4>
@endif
return Redirect::back()->with('msg', 'The Message');
ここで「メッセージ」を取得する方法が機能しないの ですか?
Session::has('msg')
Session::has('msg')
しました。「msg」はありません。
withErrors('some error')
-は配列ではなく文字列である必要があります。
Laravel 5以降
コントローラ
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
return redirect()->back()->with('success', 'your message here');
Laravel 5.4では、次のことがうまくいきました。
return back()->withErrors(['field_name' => ['Your custom message here.']]);
withErrors()
ものです。回答のメソッドのパラメーターは、2つの要素を持つ配列です['msg', 'The Message']
。:許容可能なパラメータのためのAPIを参照してくださいlaravel.com/api/4.2/Illuminate/Http/...
withErrors()
メソッドのパラメーターは、1つの要素がkey => value
ペアである配列で、値は配列です。5.4 API:laravel.com/api/5.4/Illuminate/Http/...
フラッシュメッセージを設定し、コントローラー機能から戻るようにリダイレクトするだけです。
session()->flash('msg', 'Successfully done the operation.');
return redirect()->back();
そして、メッセージをビューブレードファイルで取得できます。
{!! Session::has('msg') ? Session::get("msg") : '' !!}
{!! Session::get("msg", '') !!}
十分だと思います。get()
は、キーが存在するかどうかをすでに確認し、存在しない場合はデフォルト値を返します。
私はあなたのためにそれをすべて処理するLaracastsパッケージを支持して、これをlaravelのために自分で書くのをやめました。それは本当に使いやすく、コードをクリーンに保ちます。それを使用する方法をカバーするララキャストもあります。あなたがしなければならないすべて:
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 5.5以降の場合
コントローラ:
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
Laravel 5.6。*で提供された回答の一部を試してみましたが、他の回答で解決策を見つけられなかった人が簡単にできるように、ここに投稿するいくつかの改善点があることは明らかです。
ステップ1:コントローラーファイルに移動し、クラスの前にこれを追加します。
use Illuminate\Support\Facades\Redirect;
ステップ2:リダイレクトを返す場所にこれを追加します。
return Redirect()->back()->with(['message' => 'The Message']);
ステップ3:ブレードファイルに移動し、次のように編集します
@if (Session::has('message'))
<div class="alert alert-error>{{Session::get('message')}}</div>
@endif
その後、テストして後で感謝します。
これは、laravel 5.6。*およびおそらく5.7。*で動作するはずです。
Laravel 5.6。*
コントローラ
if(true) {
$msg = [
'message' => 'Some Message!',
];
return redirect()->route('home')->with($msg);
} else {
$msg = [
'error' => 'Some error!',
];
return redirect()->route('welcome')->with($msg);
}
ブレードテンプレート
@if (Session::has('message'))
<div class="alert alert-success" role="alert">
{{Session::get('message')}}
</div>
@elseif (Session::has('error'))
<div class="alert alert-warning" role="alert">
{{Session::get('error')}}
</div>
@endif
エンヨジ
次のようにリダイレクトしようとしたときに、このメッセージが表示されました。
public function validateLogin(LoginRequest $request){
//
return redirect()->route('sesion.iniciar')
->withErrors($request)
->withInput();
正しい方法は:
public function validateLogin(LoginRequest $request){
//
return redirect()->route('sesion.iniciar')
->withErrors($request->messages())
->withInput();
s
追加use
します。それとは別に-動作するはずです。