Validación en Laravel 5 según el método de recepción de los parámetros

Es habitual que al validar un formulario de usuarios por ejemplo, de cara al alta y a la modificación de un registro, comprobemos que no se puedan insertar emails duplicados en la base de datos. Si usamos los métodos estándar que usa Laravel para el alta y modificación sabremos que los datos nos llegan por POST cuando es un nuevo registro, y por PUT cuando es una modificación. Para ello en el request que usemos para validar los datos (en mi caso app\Http\Request\AdminUserRequest.php) pondremos las reglas de la siguiente forma:

public function rules()
{
	switch($this->method())
	{
		case 'POST': 
		{
/* es el alta de un usuario por lo que el email debe ser único y la contraseña obligatoria */
			return [
				'name' => 'required|max:255',
				'email' => 'required|email|max:255|unique:users',
				'password' => 'required|confirmed|contrasena_segura',
				'role'	=> 'required|in:superadmin,admin,user'
			];
		}
		case 'PUT':
		{
/* es la modificación de un registro por lo que el email debe ser unico sin contarse a si mismo, 
y la contraseña no es obligatoria ya que si no existe el parámetro, no la vamos a modificar */
			return [
				'name' => 'required|max:255',
				'email' => 'required|email|max:255|unique:users,email,'.$this->usuario,
				'password' => 'confirmed|contrasena_segura',
				'role'	=> 'required|in:superadmin,admin,user'
			];
		}
		default: return [];
	}
}
Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.