23

すべてのエラーメッセージを一度に表示するための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

書き込みコンテキストでメソッドの戻り値を使用できません

上記のコードは正常に機能しますが、エラーメッセージが存在するかどうかを確認し、存在する場合はそれを表示するためのより良い方法があると思います。

4

2 に答える 2

36

はい、空の関数パラメーターとしてどのメソッドも使用できないためです。phpドキュメントから:

empty()は変数のみをチェックします。それ以外の場合は、解析エラーが発生するためです。つまり、次は機能しません:empty(trim($ name))。代わりに、trim($ name)==falseを使用してください。

$ errorsとはどのクラスですか?独自のクラスの場合は、「isEmpty()」のようなメソッドを実装してから、ifステートメントで使用できます。

if ($errors->isEmpty()) { ...
于 2012-09-14T07:19:33.350 に答える
25

私のコントローラーでは、次のコードを使用して検証エラーをビューに渡します。

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

次に、私の見解では、次のコードを使用してエラーが存在するかどうかを確認できます。

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

を使用することもできますif($errors->all())

Laravel(v4)のドキュメントから:

検証が失敗した場合、withErrorsメソッドを使用してValidatorインスタンスをリダイレクトに渡すことに注意してください。このメソッドは、エラーメッセージをセッションにフラッシュして、次のリクエストで利用できるようにします... [A] n $ errors変数は、すべてのリクエストで常にすべてのビューで利用できるため、$エラー変数は常に定義されており、安全に使用できます。

于 2014-05-20T15:54:41.553 に答える