Laravel使用with()方法重定向并显示消息

225

在发生致命错误时,我正在尝试带有消息地重定向回上一页。

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

在尝试访问消息时

Sessions::get('msg')

但是什么都没有被渲染出来,我在这里做错了什么吗?


2
修正拼写错误 Sessions,并在需要的地方添加 use。除此之外 - 应该可以工作。 - Yevgeniy Afanasyev
25个回答

5

#Laravel-9 在 Blade 模板中发起重定向 Back 时的代码位置

   return redirect()->back()->with('message', "The Message");            

在这个形式内部,将在上述操作后返回

                @if(session()->has('message'))
                <p class="alert alert-success"> {{ session()->get('message') }}</p>
                @endif

5
在控制器中
例如
return redirect('login')->with('message',$message);

在 Blade 文件中 该消息将存储在会话中,而不是变量中。

例如:

@if(session('message'))
{{ session('message') }}
@endif

4

这对我来说可行,Laravel版本为^7.0。

在控制器上实现:

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

关于 Blade 文件

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

更多文档请查看Laravel官方文档


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,因此请确保在引入Bootstrap之前添加了jQuery。

可选更改:

如果您不使用Bootstrap或想跳过包含Flash消息并自己编写代码:

@if (Session::has('flash_notification.message'))
  <div class="{{ Session::get('flash_notification.level') }}">
    {{ Session::get('flash_notification.message') }}
  </div>
@endif

如果您想查看@include('flash::message')引入的HTML代码,您可以在vendor/laracasts/flash/src/views/message.blade.php中找到它。

如果您需要修改局部内容,请执行以下操作:

php artisan view:publish laracasts/flash

现在,这两个包视图将位于 `app/views/packages/laracasts/flash/` 目录下。

4

以下是100%解决方案

*上述提到的解决方案对我无效,但这个解决方案在laravel 5.8中适用:

$status = 'Successfully Done';
return back()->with(['status' => $status]);

并接收它:

@if(session()->has('status'))
     <p class="alert alert-success">{{session('status')}}</p>
@endif

解决方案将与5.8完美配合,只需像这样尝试即可。控制器return back()->withErrors(['yourfieldname' => 'yourerrormsg.']);Blade@error('email') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror - Mudit Gulgulia

3
在Blade中
 @if(Session::has('success'))

    <div class="alert alert-success" id="alert">
        <strong>Success:</strong> {{Session::get('success')}}
    </div>

@elseif(session('error'))
    <div class="alert alert-danger" id="alert">
        
        <strong>Error:</strong>{{Session::get('error')}}
    </div>
@endif

在控制器中处理成功的情况

 return redirect()->route('homee')->with('success','Successfully Log in '); 

错误信息

 return back()->with('error',"You are not able to access");

3

针对laravel 5.6.*版本

在尝试一些 Laravel 5.6.* 中提供的答案时,很明显已经有了一些改进,我将在这里发布这些改进,以便那些在其他答案中找不到解决方案的人更容易地解决问题。

在您的控制器文件中,在类之前添加以下内容:

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.*版本中使用。

2

我遇到了同样的问题,这个方法可以解决。

控制器

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

查看

<div>{{{ $errors->first('user_name') }}}</div>

2

laravl 8

Route::post('/user/profile', function () {
// Update the user's profile...

return redirect('/dashboard')->with('status', 'Profile updated!');
});

Blade语法

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

enter link description here


目前您的回答不够明确。请编辑并添加更多信息,以帮助其他人理解它如何回答所提出的问题。您可以在帮助中心找到有关编写好的答案的更多信息。 - Community
在 Laravel 9 上无法工作,我有什么遗漏吗? - Rajib

1

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);
}

Blade模板

  @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

享受


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接