如何从MessageBag
中删 debugging 误消息?
我一直试图从MessageBag
使用的消息数组中删除一个特定的元素,但没有成功。
我两次收到相同的错误消息。
@if($errors->has('undefined'))
<div class="alert alert-warning">
<button type="button" class="close" data-dismiss="alert">×</button>
<h4>Failure.</h4>
{{ $errors->first('undefined') }}
</div>
<?
// $messages = $errors->getMessages();
$messages = $errors->toArray();
unset($messages['undefined']);
?>
@endif
@if($errors->any())
<div class="alert alert-error">
<button type="button" class="close" data-dismiss="alert">×</button>
<h4>Error!</h4>
{{ $errors->first() }}
</div>
@endif
编辑
我做过类似的事情,看起来很有效。
<?
$messages = $errors->toArray();
?>
@if(array_key_exists('undefined', $messages))
<?
$message_array = $messages['undefined'];
$message = $message_array[0];
unset($messages['undefined']);
?>
<div class="alert alert-warning">
<button type="button" class="close" data-dismiss="alert">×</button>
<h4>Failure.</h4>
{{ $message }}
</div>
@endif
<?
foreach ($messages as $error => $error_array) {
?>
<div class="alert alert-error">
<button type="button" class="close" data-dismiss="alert">×</button>
<h4>Error!</h4>
{{ $error_array[0] }}
</div>
<?
}
?>
但我的问题仍然存在?为什么会发生这种情况?
是否与Session有关?我知道errors
变量存储在Session中。
3条答案
按热度按时间sxissh061#
http://laravel.com/api/class-Illuminate.Support.MessageBag.html
不幸的是,Laravel没有提供从MessageBag示例中删 debugging 误的方法。你可以做的是将“undefined”错误设置为一个变量,这样它就不会出现在MessageBag中,只需使用类似的逻辑来显示/隐藏它。
return View::make('test.view')->with('undefined', 'Something is undefined')->withInput($input)->withErrors($validator);
通过引用传递示例。您可以修改
MessageBag
类以使其通过引用传递,但这将是一种黑客行为。请注意,
&
被添加到函数名和调用的前面。y53ybaqx2#
我为此打开了一个PR,它被合并了。从Laravel 10开始,
remove
方法被添加到MessageBag
中,你可以:c9x0cxw03#
我遇到了同样的问题,我知道我可以重新创建
MessageBag
,也可以使用->getMessages()
访问当前MessageBag
的错误。希望这能帮上忙