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

Sum*_*osh 14 php validation laravel

在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; ?>
Run Code Online (Sandbox Code Playgroud)

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

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

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

Cyp*_*ian 26

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

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

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

if ($errors->isEmpty()) { ...
Run Code Online (Sandbox Code Playgroud)


chi*_*t24 18

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

return Redirect::to('page')
    ->withErrors($validator);
Run Code Online (Sandbox Code Playgroud)

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

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

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

来自Laravel(v4)文档:

请注意,当验证失败时,我们使用withErrors方法将Validator实例传递给Redirect.此方法会将错误消息刷新到会话,以便下次请求时可以使用... [A] n $ errors变量将始终在所有视图中,每次请求时都可用,允许您方便地假设$始终定义错误变量,可以安全使用.