2012-09-14 11 views
9

En laravel para mostrar todos los mensajes de error a la vez que utilizo el siguiente código en la vistaCompruebe si existe algún mensaje de error y mostrar todos ellos en 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; ?> 

Pero cuando quiero utilizar $errors->all() en lugar de $something en el caso de la condición que está mostrando un error

no se puede utilizar el valor de retorno del método en el contexto de escritura

al aunque el código anterior funciona bien, creo que puede haber mejores formas de verificar si existe algún mensaje de error y, si lo hace, mostrarlo.

Respuesta

15

Sí, porque no puede usar ningún método como parámetro de función vacío. Desde php docs:

empty() solo comprueba las variables como cualquier otra cosa producirá un error de análisis . En otras palabras, lo siguiente no funcionará: empty (trim ($ name)). En su lugar, use trim ($ name) == false.

¿Qué clase es $ errors? Si se trata de su propia clase puede implementar tal método como 'estaVacia()' y luego usar en la sentencia if:

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

Gracias !! ¡No estaba enterado de eso! –

11

En mi controlador utilizo el siguiente código para pasar los errores de validación a mi punto de vista:

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

Entonces, en mi opinión, puedo usar el siguiente código para comprobar si existen errores:

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

también puede utilizar if($errors->all()).

Desde el Laravel (v4) docs:

Tenga en cuenta que cuando la validación falla, se pasa la instancia de validación a la redirección utilizando el método withErrors. Este método mostrará los mensajes de error en la sesión para que estén disponibles en la próxima solicitud ... La variable [A] n $ errors siempre estará disponible en todas las vistas, en cada solicitud, lo que le permite convenientemente Supongamos que la variable de errores $ siempre se define y se puede usar de forma segura.

+1

¿hay alguna manera de llamar $ errores en el controlador, o debo encontrarlo en Session? –

+0

La única forma que encontré para obtenerlo es así: '$ errors = Session :: get ('errors');' –