我曾尝试在控制器中显示错误消息,但它不起作用,但当我使用dd
时,它起作用。
我的代码:
if ($validation->fails())
{
/*Doesn't work
foreach ($validation->fails() as $messages) {
$messages // Doesn't work
}
*/
dd($validation->errors); //This works
}
我注意到这里提供的示例都不起作用!给你。这是我在意识到validator->messages()
返回一个不可检索的受保护对象后找到的解决方案。
if ($validator->fails())
{
foreach ($validator->messages()->getMessages() as $field_name => $messages)
{
var_dump($messages); // messages are retrieved (publicly)
}
}
我会引用MessageBag,这是messages()
返回的内容。有关Validator类的其他确认信息,请参阅。
$validation->fails()
返回输入是否通过验证的布尔值。您可以从$validation->messages()
访问验证消息,也可以将它们传递到视图,在该视图中它们将绑定到$errors
变量。
请参阅验证器文档。
这是我刚刚在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()
)。