当出现致命错误时,我正在尝试重定向到带有消息的上一页。
App::fatal(function($exception)
{
return Redirect::back()->with('msg', 'The Message');
}
在试图访问味精的视图中
Sessions::get('msg')
但是什么都没有渲染,我在这里做错了吗?
尝试
return Redirect::back()->withErrors(['msg' => 'The Message']);
并在您的视图中调用此
@if($errors->any())
<h4>{{$errors->first()}}</h4>
@endif
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
替代方法是
控制器
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
在 Laravel 5.4 中,以下内容对我有用:
return back()->withErrors(['field_name' => ['Your custom message here.']]);
您有一个错误(拼写错误):
Sessions::get('msg')// an extra 's' on end
应该:
Session::get('msg')
我想,现在它应该起作用了,它对我有用。
只需设置闪存消息并从您的控制器功能重定向到后面。
session()->flash('msg', 'Successfully done the operation.');
return redirect()->back();
然后您可以在视图刀片文件中获取消息。
{!! Session::has('msg') ? Session::get("msg") : '' !!}
在 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.8 中,您可以执行以下操作:
return redirect()->back()->withErrors(['name' => 'The name is required']);
在刀片中:
@error('name')
<p>{{ $message }}</p>
@enderror
对于 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 写这个,而是使用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/' 目录中。
这是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
在控制器中
例如
return redirect('login')->with('message',$message);
在刀片文件 中消息将存储在会话中而不是变量中。
例如
@if(session('message'))
{{ session('message') }}
@endif
在尝试 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.*
它适用于我,Laravel 版本是 ^7.0
在控制器上
return back()->with('success', 'Succesfully Added');
在刀片文件上
@if (session('success'))
<div class="alert alert-success">
{!! session('success') !!}
</div>
@endif
有关文档,请查看Laravel 文档
我遇到了同样的问题,这很有效。
控制器
return Redirect::back()->withInput()->withErrors(array('user_name' => $message));
看法
<div>{{{ $errors->first('user_name') }}}</div>
在刀片
@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");
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
恩约伊
对于 Laravel 3
只需提醒@giannis christofakis 的回答;对于使用 Laravel 3 的任何人替换
return Redirect::back()->withErrors(['msg', 'The Message']);
和:
return Redirect::back()->with_errors(['msg', 'The Message']);
我知道这是一篇旧帖子,但这个答案可能会对那里的人有所帮助。
在 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
例如
希望这可以帮助某人。干杯。
拉拉维尔 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
**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
当我尝试重定向为:
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();