我尝试在控制器中显示错误消息,但它不起作用,但是当我尝试dd
时,它可以正常工作
我的代码:
if ($validation->fails())
{
/*Doesnt Work
foreach ($validation->fails() as $messages) {
$messages // Doesnt Work
}
*/
dd($validation->errors); //This Is works
}
答案 0 :(得分:9)
我注意到这里提供的示例实际上都没有效果!所以,你走了。在认识到“validator-> messages()”返回一个无法检索的受保护对象后,这是我找到的解决方案。
if ($validator->fails())
{
foreach ($validator->messages()->getMessages() as $field_name => $messages)
{
var_dump($messages); // messages are retrieved (publicly)
}
}
我会参考: http://laravel.com/api/source-class-Illuminate.Support.MessageBag.html
MessageBag,这是“messages()”返回的内容。对于Validator类的额外确认 - 参考: http://laravel.com/api/class-Illuminate.Validation.Validator.html
答案 1 :(得分:2)
$validation->fails()
返回输入是否通过验证的布尔值。您可以从$validation->messages()
访问验证消息,或将它们传递到视图,以便将它们绑定到$errors
变量。
请参阅validator docs。
答案 2 :(得分:0)
这是我刚在artisan 5.0控制台命令中使用的,用于验证参数。这是fire()
方法:
// Create the validator.
$validator = Validator::make(
$this->argument(),
['field1' => 'required|other|rules']
);
// Validate the arguments.
if ($validator->fails())
{
// Failed validation.
// Each failed field will have one or more messages.
foreach($validator->messages()->getMessages() as $field_name => $messages) {
// Go through each message for this field.
foreach($messages AS $message) {
$this->error($field_name . ': ' . $message);
}
}
// Indicate the command has failed.
return 1;
}
这是@tfont
答案的延伸如果此命令未作为控制台命令(即CLI,命令行)运行,则可能需要更改消息的发送位置($this->error()
。