gia*_*kis 6 php session-variables laravel laravel-4
如何从 中删除错误消息MessageBag?
我一直试图从消息数组中删除一个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
Run Code Online (Sandbox Code Playgroud)
我做过类似的事情,而且似乎有效。
<?
$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>
<?
}
?>
Run Code Online (Sandbox Code Playgroud)
但我的问题仍然存在?首先为什么会发生这种情况?和Session
有关系吗?我知道它存储在会话中的变量。errors
小智 5
我遇到了同样的问题,知道我可以重新创建并访问MessageBag当前的错误。我所做的只是:MessageBag->getMessages()
$validationErrors = $validator->errors()->getMessages();
unset($validationErrors['email']);
unset($validationErrors['phone_number']);
$newValidationErrors = new MessageBag($validationErrors);
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助
http://laravel.com/api/class-Illuminate.Support.MessageBag.html
不幸的是,Laravel 不提供从 MessageBag 实例中删除错误的方法。您可以做的是将“未定义”错误设置为变量,这样它甚至不在 MessageBag 中开始,只需使用类似的逻辑来显示/隐藏它。
return View::make('test.view')
->with('undefined', 'Something is undefined')
->withInput($input)->withErrors($validator);
Run Code Online (Sandbox Code Playgroud)
通过参考示例传递。您可以修改该类MessageBag以使其通过引用传递,但这会很麻烦。
<?php
class foo
{
public $value = 42;
public function &getValue()
{
return $this->value;
}
}
$obj = new foo;
$myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 42.
$myValue = 2;
echo $obj->getValue(); // prints the new value of $obj->value, i.e. 2.
?>
Run Code Online (Sandbox Code Playgroud)
请注意&函数名称和调用前面的 。