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

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
于 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 回答
28

在 Laravel 5.4 中,以下内容对我有用:

return back()->withErrors(['field_name' => ['Your custom message here.']]);
于 2017-05-03T13:06:13.467 回答
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 回答
10

在 Laravel 5.5 中

return back()->withErrors($arrayWithErrors);

在使用 Blade 的视图中:

@if($errors->has())
    <ul>
    @foreach ($errors->all() as $error)
        <li>{{ $error }}</li>
    @endforeach
    </ul>
@endif
于 2018-05-25T08:58:35.917 回答
8

在 laravel 5.8 中,您可以执行以下操作:

return redirect()->back()->withErrors(['name' => 'The name is required']);

在刀片中:

@error('name')
<p>{{ $message }}</p>
@enderror
于 2019-09-11T12:20:54.017 回答
7

对于 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
于 2019-08-01T11:11:58.497 回答
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,因此请确保在引导之前添加它。

可选更改:

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

@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

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

于 2014-12-10T16:21:46.163 回答
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
于 2020-10-27T06:51:09.443 回答
4

在控制器中

例如

return redirect('login')->with('message',$message);

在刀片文件 中消息将存储在会话中而不是变量中。

例如

@if(session('message'))
{{ session('message') }}
@endif
于 2019-08-20T16:04:59.847 回答
3

对于 laravel 5.6.*

在尝试 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.*

于 2019-03-11T06:38:34.737 回答
3

它适用于我,Laravel 版本是 ^7.0

在控制器上

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

在刀片文件上

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

有关文档,请查看Laravel 文档

于 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 回答
2

在刀片

 @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");
于 2021-05-07T06:08:05.337 回答
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);
}

刀片模板

  @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

恩约伊

于 2018-08-04T10:55:56.957 回答
1

对于 Laravel 3

只需提醒@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 回答
1

我知道这是一篇旧帖子,但这个答案可能会对那里的人有所帮助。

在 Laravel 8.x 中,这对我有用:您可以将错误返回到上一页或另一页。

return Redirect::back()->withErrors(['password' => ['Invalid Username or Password']]);

这也将起作用:

return view('auth.login')->withErrors(['username' => ['Invalid Username or Password']]);

但是,请确保您返回的页面/视图的字段名称对应于 withErrors 方法中传递的第一个参数(在本例中为用户名或密码),并且您的视图中的 @error 指令引用相同的字段像这样

@error('password') //or @error('username')
 <span class="invalid-feedback" role="alert">
   <strong>{{ $message }}</strong>
 </span>
@enderror 

例如

希望这可以帮助某人。干杯。

于 2021-11-09T08:00:12.857 回答
0

拉拉维尔 5.8

控制器

return back()->with('error', 'Incorrect username or password.');

  @if (Session::has('error'))
       <div class="alert alert-warning" role="alert">
           {{Session::get('error')}}
       </div>
  @endif
于 2019-08-10T04:02:14.980 回答
0
    **Try This**
    
    Try This Code 
    --- Controller ---

    return redirect('list')->with('message', 'Successfully');
    return redirect('list');
   
  ----  Blade view ------
    @if(session()->has('message'))
        <div class="alert alert-success">
            {{ session()->get('message') }}
        </div>
    @endif
于 2021-08-27T04:16:23.127 回答
0

当我尝试重定向为:

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();
于 2017-05-22T19:05:52.770 回答