我尝试在 Controller 中显示错误消息,但它不起作用,但是当我使用 时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 答案的扩展
$this->error()
如果此命令未作为控制台命令(即 CLI、命令行)运行,您可能需要更改消息的发送位置 ( )。