197

致命的なエラーが発生したときに、メッセージを表示して前のページにリダイレクトしようとしています。

App::fatal(function($exception)
{
    return Redirect::back()->with('msg', 'The Message');
}

でメッセージにアクセスしようとしているビューで

Sessions::get('msg')

しかし、何もレンダリングされていません。ここで何か間違ったことをしていますか?

4

22 に答える 22

306

試す

return Redirect::back()->withErrors(['msg' => 'The Message']);

ビュー内でこれを呼び出します

@if($errors->any())
<h4>{{$errors->first()}}</h4>
@endif
于 2013-11-07T14:55:44.063 に答える
170

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
于 2016-04-19T05:36:08.587 に答える
74

代替アプローチは

コントローラ

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
于 2014-05-21T21:50:49.107 に答える
13

エラーがあります (スペルミス):

Sessions::get('msg')// an extra 's' on end

次のようにする必要があります。

Session::get('msg')

今はうまくいくはずです。

于 2014-11-13T10:33:09.230 に答える
12

フラッシュメッセージを設定し、コントローラー機能からリダイレクトするだけです。

    session()->flash('msg', 'Successfully done the operation.');
    return redirect()->back();

そして、ビュー ブレード ファイルでメッセージを取得できます。

   {!! Session::has('msg') ? Session::get("msg") : '' !!}
于 2016-07-25T08:58:13.423 に答える
4

私はこれを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/」ディレクトリに配置されます。

于 2014-12-10T16:21:46.163 に答える
3

それは私にとってはうまくいき、Laravelのバージョンは^ 7.0です

コントローラ上

return back()->with('success', 'Succesfully Added');

ブレードファイルについて

@if (session('success'))
      <div class="alert alert-success">
         {!! session('success') !!}
      </div>
@endif

ドキュメントについては、Laravel docを参照してください。

于 2021-07-02T15:53:28.400 に答える
2

私は同じ問題に直面しましたが、これはうまくいきました。

コントローラ

return Redirect::back()->withInput()->withErrors(array('user_name' => $message));

意見

<div>{{{ $errors->first('user_name') }}}</div>
于 2015-12-16T05:47:33.357 に答える
1

Laravel3の場合

@giannis christofakisの回答に注意してください。Laravel 3 を使用しているすべてのユーザー向け

return Redirect::back()->withErrors(['msg', 'The Message']);

と:

return Redirect::back()->with_errors(['msg', 'The Message']);
于 2016-02-08T17:32:11.140 に答える