Laravel用()消息重定向返回

我试图重定向到上一页的消息时,有一个致命的错误。

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

在视图中尝试访问msg

Sessions::get('msg')

但是什么都没有渲染,是我做错了吗?

694597 次浏览

试一试

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

在视图中调用这个

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

另一种方法是

控制器

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

你有一个错误(拼写错误):

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

应该是:

Session::get('msg')

我想,现在应该有用了,对我来说确实有用。

我停止写这个laravel自己赞成Laracasts包处理这一切为你。它真的很容易使用,并保持您的代码干净。甚至还有一个laracast来说明如何使用它。你所要做的就是:

通过Composer导入包。

"require": {
"laracasts/flash": "~1.0"
}

在app/config/app.php中包含服务提供者。

'providers' => [
'Laracasts\Flash\FlashServiceProvider'
];

在底部的同一个文件中添加一个facade别名:

'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/'目录中。

我也遇到过同样的问题,这个方法奏效了。

控制器

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

视图

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

Laravel 3

只是提醒一下@giannis christofakis的回答;对于任何使用Laravel 3替代

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

:

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

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

只需设置flash消息和重定向回从你的控制器功能。

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

然后你可以在视图刀片文件中得到消息。

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

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

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

当我试图重定向时,我收到了这条消息:

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

在Laravel 5.5中:

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

在使用Blade的视图中:

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

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

对于laravel 5.6.*

在尝试Laravel 5.6提供的一些答案时。*,很明显已经有了一些改进,我将在这里发布,以方便那些无法找到解决方案的其余答案。

步骤1:

转到你的控制器文件,在类之前添加这个:

use Illuminate\Support\Facades\Redirect;
< p >步骤2: 在你想要返回重定向的地方添加这个
 return Redirect()->back()->with(['message' => 'The Message']);
< p >步骤3: 转到刀片文件并按如下方式编辑

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

然后测试一下,然后感谢我。

这应该适用于laravel 5.6。*和可能5.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

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

在控制器

例如

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

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

例如

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

在laravel 5.8中,你可以做以下事情:

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

在刀刃上:

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

这是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

在叶片

 @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
< p >在控制器 成功的< / p >
 return redirect()->route('homee')->with('success','Successfully Log in ');

为错误

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

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

在控制器

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

关于Blade文件

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

有关文档,请参阅Laravel医生

    **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

我知道这是一个老帖子,但这个答案可能会帮助到一些人。

在Laravel 8。这对我来说是有效的:你可以将错误返回到上一页或另一页。

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

例如

希望这能帮助到一些人。欢呼。

laravl 8

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


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

叶片的语法

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

enter link description here

< p > # Laravel-9 在刀片内部,该重定向返回操作启动

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

刀片内部的这种形式,将在上述动作后返回

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