Para buenas prácticas, no es recomendable manejar las validaciones en los controllers. Laravel en su documentación propone una manera más óptima. De una vez aprovecho para facilitarles el link de la documentación en español, un gran aporte de Styde
Laravel en Español - Validación de formularios
- Primero
php artisan make:request StoreExpenseReports
Esto creará una Carpeta Request en Http
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'title' => 'required|min:3',
];
}
En rules, agregarán todas las reglas de validaciones para el modelo correspondiente en este caso Expense Reports
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
En el método authorize vamos a poner true, para que nos permita validar y ejecutar la acción del controller. OJO este método es más extenso en ella podemos validar si un user tiene o no permiso de editar y esas cuestiones.
Por ultimo en nuestro controller,
/**
* Store the incoming blog post.
*
* @param StoreBlogPost $request
* @return Response
*/
public function store(StoreExpenseReports $request)
{
// The incoming request is valid...
// Retrieve the validated input data...
$validated = $request->validated();
}
En vez de pasar por parámetro Request. Pasamos la clase que creamos al principio con artisan StoreExpenseReports
De esta manera ya está validado y podemos hacer uso de esta misma clase en nuestro metodo Update
Contenido Extra
Modificar mensajes de Error
Dentro de la clase creada al principio crear el método messages y agregar los mensajes de acuerdo al campo y validación de la siguiente.
/**
* Get the error messages for the defined validation rules.
*
* @return array
*/
public function messages()
{
return [
'title.required' => 'A title is required',
'body.required' => 'A message is required',
];
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?