ofm*_*oon 0 php variables session notifications laravel
我试图找出存储错误消息的最佳方法(例如由于参数错误)。
假设我在控制器中声明接受的参数,但如果给出了任何其他参数,我想显示一个页面,仅显示错误消息“给出了错误的参数”。
非常简单的代码示例:
if ($param == 'example') {
// some code
} else {
// accepting no other parameter and should return a page with an error message
// session? variable?
}
return view('index/example');
Run Code Online (Sandbox Code Playgroud)
我可以使用一些会话,例如:
正常会话:session()->put(...)
问题:如果我不手动删除数据,数据就会保留
向会话闪烁一条消息:session()->flash(...)
问题:这是为了下一个请求,所以当我更正错误的参数时,我必须重新加载两次才能加载正确的页面
当前请求的会话:session()->now(...);
问题:??
我还可以使用普通变量:
$error = 'message;
return view('index', compact('error'));
我知道会话闪现消息是为此类消息创建的,但我真的不想使用它,因为我上面已经简短地解释了这个问题。
我想了解每种方法的(缺点)优点,以及哪种方法最好,或者是否有推荐的方法实际上效果很好。
我推荐我在项目中使用的这段代码:
/*
* Add an error to Laravel session $errors
* @author Pavel Lint
* @param string $key
* @param string $error_msg
*/
function add_error($error_msg, $key = 'default') {
$errors = Session::get('errors', new ViewErrorBag);
if (! $errors instanceof ViewErrorBag) {
$errors = new ViewErrorBag;
}
$bag = $errors->getBags()['default'] ?? new MessageBag;
$bag->add($key, $error_msg);
Session::flash(
'errors', $errors->put('default', $bag)
);
}
Run Code Online (Sandbox Code Playgroud)
这使您可以将错误存储在 Laravel 本身所在的位置。您将受益于$errors
所有刀片模板中自动提供的变量。然后在你的刀片中的某个地方,这段标准代码将显示错误:
@if ($errors->any())
<div class="alert alert-danger">
There were some errors with your request.
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11407 次 |
最近记录: |