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

Posted

技术标签:

【中文标题】检查是不是存在任何错误消息并在 laravel 中显示所有错误消息【英文标题】:Check if any error message exists and show all of them in laravel检查是否存在任何错误消息并在 laravel 中显示所有错误消息 【发布时间】:2012-09-07 08:10:59 【问题描述】:

在 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-&gt;all() 而不是 $something 时,它会显示错误

不能在写上下文中使用方法返回值

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

谢谢!!我没有意识到这一点! 其实我已经查看了documentation 并且已经实现了$errors-&gt;isEmpty() 函数:)【参考方案2】:

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

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

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

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

您也可以使用if($errors-&gt;all())

来自Laravel (v4) docs:

请注意,当验证失败时,我们将 Validator 实例传递给 使用 withErrors 方法重定向。这种方法会闪现错误 向会话发送消息,以便它们在下一次可用 请求... [A]n $errors 变量将始终在所有 您对每个请求的看法,让您可以方便地假设 $errors 变量总是被定义并且可以安全使用。

【讨论】:

有没有办法在控制器中调用$errors,或者我必须在Session中找到它? 我找到的唯一方法是这样的:$errors = Session::get('errors');

以上是关于检查是不是存在任何错误消息并在 laravel 中显示所有错误消息的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 检查给定 url 的路由是不是存在于路由中

Laravel 5.2 - 检查两个用户之间的对话是不是存在

Laravel 验证 - 如何检查给定数组中是不是存在值?

如何在 laravel 中输入所有数组并在字段下方显示验证错误

检查 protoBuf 中是不是存在消息类型

在我添加错误消息以检查 CapNum 是不是为空或已存在于数据库中之前,我的代码一直在工作