Laravel Redirect返回()消息

时间:2013-11-07 14:52:25

标签: laravel laravel-5 laravel-4

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

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

在尝试使用

访问msg的视图中
Sessions::get('msg')

但是没有任何东西被渲染,我在这里做错了吗?

20 个答案:

答案 0 :(得分:183)

尝试

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

并在视图中调用此

@if($errors->any())
<h4>{{$errors->first()}}</h4>
@endif

答案 1 :(得分:90)

  

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

答案 2 :(得分:54)

替代方法是

控制器

Session::flash('message', "Special message goes here");
return Redirect::back();

查看

@if (Session::has('message'))
   <div class="alert alert-info">{{ Session::get('message') }}</div>
@endif

答案 3 :(得分:14)

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

return back()->withErrors(['field_name' => ['Your custom message here.']]);

答案 4 :(得分:13)

您有错误(拼写错误):

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

应该是:

Session::get('msg')

我认为,现在它应该有效,它对我有用。

答案 5 :(得分:7)

只需设置Flash消息并从控制器功能重定向回来。

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

然后您可以在视图刀片文件中获取消息。

   {!! Session::has('msg') ? Session::get("msg") : '' !!}

答案 6 :(得分:6)

在Laravel 5.5中

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

在使用Blade的视图中:

@if($errors->has())
    <ul>
    @foreach ($errors->all() as $error)
        <li>{{ $error }}</li>
    @endforeach
    </ul>
@endif

答案 7 :(得分:4)

我自己不再为了laravel写这篇文章而赞成为你处理这一切的Laracasts package。它非常易于使用并保持代码清洁。甚至有一个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或想跳过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 /'目录中。

答案 8 :(得分:4)

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

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

并在刀片中:

@error('name')
<p>{{ $message }}</p>
@enderror

答案 9 :(得分:1)

对于Laravel 3

只是对@giannis christofakis的回答;对于使用Laravel 3的任何人来说,替换

conn = psycopg2.connect(database=the_database,
                            user="postgres",
                            password=PASSWORD,
                            host="",
                            port="")

print "Putting data in the table: Opened database successfully"
cur = conn.cursor()
with open(the_file, 'r') as f:
    cur.copy_from(file=f, table = the_table, sep=the_delimiter)
    conn.commit()
print "Successfully copied all data to the database!"
conn.close()

使用:

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

答案 10 :(得分:1)

我遇到了同样的问题,这很有效。

控制器

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

查看

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

答案 11 :(得分: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

Enyoj

答案 12 :(得分:1)

对于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

答案 13 :(得分:1)

在控制器中

例如

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

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

例如

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

答案 14 :(得分:1)

在刀片中

 @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");

答案 15 :(得分: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();

答案 16 :(得分:0)

对于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。*

答案 17 :(得分:0)

Laravel 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

答案 18 :(得分:0)

这是100%的解决方案

* 上面提到的解决方案不适用于我,但是在laravel 5.8中该解决方案对我有效:

select req_id 
  from t
group by req_id
having max(quantity) = 0
   and count(distinct quantity)=1

并将其接收为:

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

答案 19 :(得分:0)

它对我有用,Laravel 版本是 ^7.0

在控制器上

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

关于刀片文件

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

有关文档,请查看 Laravel doc