检查是否存在任何错误消息,并在 laravel 中显示所有错误消息

2022-08-30 16:26:56

在laravel中,一次显示所有错误消息,我在视图中使用以下代码

<?php 
 $something = $errors->all(); 
 if(!empty($something)): 
?>

<div class = "alert alert-error">                      
  @foreach ($errors->all('<p>:message</p>') as $input_error)
    {{ $input_error }}
  @endforeach 
</div> 

<?php endif; ?>

但是当我想使用而不是在if条件下使用它时,它会显示一个错误$errors->all()$something

无法在写入上下文中使用方法返回值

尽管上面的代码工作正常,但我认为可能有更好的方法来检查是否存在任何错误消息,如果存在,则显示它。


答案 1

是的,因为您不能使用任何方法作为空函数参数。来自 php 文档:

empty() 仅检查变量,因为其他任何内容都会导致解析错误。换句话说,以下内容将不起作用:空(trim($name))。相反,请使用 trim($name) == false。

$errors是什么类?如果它是你自己的类,你可以实现像'isEmpty()'这样的方法,然后在if语句中使用:

if ($errors->isEmpty()) { ...

答案 2

在我的控制器中,我使用以下代码将验证错误传递给我的视图:

return Redirect::to('page')
    ->withErrors($validator);

然后,在我看来,我可以使用以下代码来检查是否存在错误:

@if($errors->any())
<div id="error-box">
    <!-- Display errors here -->
</div>
@endif

您也可以使用 .if($errors->all())

来自 Laravel (v4) 文档

请注意,当验证失败时,我们使用 withErrors 方法将验证程序实例传递给重定向。此方法会将错误消息闪烁到会话,以便它们在下一个请求中可用...[A]n$errors变量将始终在您的所有视图中可用,在每个请求中,允许您方便地假设$errors变量始终是定义的并且可以安全地使用的。


推荐