私はlaravelのホームページに成功メッセージを返そうとしています。
return redirect()->back()->withSuccess('IT WORKS!');
何らかの理由で、このコードを実行した後、変数$ successは値を取得しません。
成功メッセージを表示するために使用しているコード:
@if (!empty($success))
<h1>{{$success}}</h1>
@endif
次のように、routes.phpのWebミドルウェアグループにホームページとニュースレターページを追加しました。
Route::group(['middleware' => 'web'], function () {
Route::auth();
Route::get('/', function () {
return view('home');
});
Route::post('/newsletter/subscribe','NewsletterController@subscribe');
});
なぜこれが機能しないように見えるのか誰にも分かりますか?
routes.php
からweb
ミドルウェアを削除する必要があります。 web
ミドルウェアを手動で追加すると、 Laravel 5.2.27以降のセッションおよびリクエスト関連の問題 が発生します。
それでも解決しない場合(まだ、ミドルウェアなしでroutes.php
を保持する)、少し異なるアプローチを試すことができます:
return redirect()->back()->with('message', 'IT WORKS!');
メッセージが存在する場合の表示:
@if(session()->has('message'))
<div class="alert alert-success">
{{ session()->get('message') }}
</div>
@endif
これを使用できます:
return redirect()->back()->withSuccess('IT WORKS!');
ビューでこれを使用します:
@if(session('success'))
<h1>{{session('success')}}</h1>
@endif
コントローラ:
return redirect()->route('subscriptions.index')->withSuccess(['Success Message here!']);
刃
@if (session()->has('success'))
<div class="alert alert-success">
@if(is_array(session()->get('success')))
<ul>
@foreach (session()->get('success') as $message)
<li>{{ $message }}</li>
@endforeach
</ul>
@else
{{ session()->get('success') }}
@endif
</div>
@endif
このパーツはいつでも個別のブレードファイルとして保存し、簡単に含めることができます。前例:
<div class="row">
<div class="col-md-6">
@include('admin.system.success')
<div class="box box-widget">
これを行う1つの方法は、次のようにセッションでメッセージを送信することです。
コントローラー:
return redirect()->back()->with('success', 'IT WORKS!');
ビュー:
@if (session()->has('success'))
<h1>{{ session('success') }}</h1>
@endif
そして、それを行う別の方法は、単にセッションを作成し、テキストを直接ビューに入れることです:
コントローラー:
return redirect()->back()->with('success', true);
ビュー:
@if (session()->has('success'))
<h1>IT WORKS!</h1>
@endif
ここで完全なドキュメントを確認できます: リダイレクトされたセッションデータを使用したリダイレクト
よろしくお願いします。
上記はすべて正しいですが、この直線的な1ライナーを試してください。
{{session()->has('message') ? session()->get('message') : ''}}
コントローラー内
return redirect()->route('company')->with('update', 'Content has been updated successfully!');
ビュー内
@if (session('update'))
<div class="alert alert-success alert-dismissable custom-success-box" style="margin: 15px;">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
<strong> {{ session('update') }} </strong>
</div>
@endif
laravel MessageBagを使用して、既存のメッセージに独自のメッセージを追加できます。
MessageBagを使用するには、次を使用する必要があります。
use Illuminate\Support\MessageBag;
コントローラー内:
MessageBag $message_bag
$message_bag->add('message', trans('auth.confirmation-success'));
return redirect('login')->withSuccess($message_bag);
それが何かを助けることを願っています。