You are on page 1of 11

TRABAJO DE CONSULTA DE PROGRAMACION WEB

NOMBRE: GEOVANNY FABRICIO MINGA


CICLO: 6to ANALISIS DE SISTEMAS

VALIDACIONES EN LARAVEL
Uso bsico
Laravel viene acompaado de una simple y conveniente habilidad de validacin de datos
y recuperacin de mensajes de error mediante la clase Validation.
Ejemplo de validacin bsica
$validator = Validator::make(
array('name' => 'Dayle'),
array('name' => 'required|min:5')
);
El primer argumento que se le debe enviar al mtodo make es el conjunto de datos a
validar. El segundo argumento son las reglas a ser aplicadas al conjunto de datos.
Utilizar arrays para definir reglas
Varias reglas pueden delimitarse ya sea usando el carcter "|" (pipe o barra vertical) o
como elementos separados de un array.
$validator = Validator::make(
array('name' => 'Dayle'),
array('name' => array('required', 'min:5'))
);
Validando mltiples campos
$validator = Validator::make(
array(
'name' => 'Dayle',e

'password' => 'lamepassword',


'email' => 'email@example.com'
),
array(
'name' => 'required',
'password' => 'required|min:8',
'email' => 'required|email|unique:users'
)
);
Una vez se a creado la instancia de Validator, se llamar al mtodo fails (o passes) para
llevar a cabo la validacin.
if ($validator->fails())
{
// No ha pasado la validacin
}
Si la validacin ha fallado, se pueden recuperar los mensajes de error desde el validator
$messages = $validator->messages();
Tambin se puede acceder a un array de las reglas de validacin fallidas, sin mensajes.
Para ello, utiliza el mtodo failed:
$failed = $validator->failed();
REGLAS DE VALIDACIN DISPONIBLES
accepted
El campo bajo validacin debe ser yes, on (activado) 1. Esto puede ser til cuando se
valida la aceptacin de "Trminos del servicio".
active_url
El cambo bajo validacin debe ser una URL vlida acorde con la funcin PHP checkdnsrr.
after:date
El campo bajo validacin debe ser una fecha posterior a la fecha dada. Las fechas sern
pasadas a la funcin strtotime de PHP.

alpha
El campo bajo validacin debe contener nicamente caracteres alfabticos.
alpha_dash
El campo bajo validacin puede contener caracteres alfanumricos, as como guiones
altos y bajos.
alpha_num
El campo bajo validacin debe contener nicamente caracteres alfanumricos.
array
El campo bajo validacin debe ser del tipo array.
before:date
El campo bajo validacin debe ser una fecha anterior a la fecha dada. Las fechas sern
pasadas a la funcin strtotime de PHP.
between:min,max
El campo bajo validacin debe tener un tamao entre los dados min y max. Cadenas,
nmeros y archivos son evaluados del mismo modo, al igual que la regla size.
confirmed
El campo bajo validacin debe contener un campo coincidente de foo_confirmation. Por
ejemplo,

si

el

campo

validar

fuera

password,

un

campo

coincidente password_confirmation debera estar presente en la entrada de datos.


date
El campo bajo validacin debe ser una fecha vlida acorde con la funcin strtotime de
PHP.
date_format:format
El campo bajo validacin debe coincidir con format (formato) definido acorde con la
funcin PHP date_parse_from_format.
different:field
El campo field dado debe ser diferente que el campo a validar.
digits:value
El campo bajo validacin debe ser numrico y debe tener una longitud exacta de value..
digits_between:min,max

El campo bajo validacin debe contener una longitud de entre min y max..
Email
El campo a validar estar correctamente formateado como una direccin e-mail.
exists:table,column
El campo bajo validacin debe existir en una tabla de la base de datos dada.
Uso bsico de la regla 'exists'
'state' => 'exists:states'
Especificar un nombre de columna personalizado
'state' => 'exists:states,abbreviation'
Puedes adems especificar ms condiciones que sern aadidas como clausulas "where"
a la consulta:
'email' => 'exists:staff,email,account_id,1'
Pasando NULL como valor de la clausula "where" comprobar valores NULL en la base
de datos:
'email' => 'exists:staff,email,deleted_at,NULL'
image
El archivo bajo validacin debe ser una imagen (jpeg, png, bmp o gif)
in:foo,bar,...
El campo bajo validacin debe estar incluido en lista de valores dados.
integer
El campo bajo validacin debe ser un valor entero.
ip
El campo a validar debe estar correctamente formateado como una direccin IP.
max:value
El campo a validar debe ser inferior o igual al mximo value. Cadenas, nmeros y
archivos son evaluados del mismo modo que la reglasize.
mimes:foo,bar,...
El archivo a validar debe ser del tipo MIME que corresponda a alguno de los listados.
Uso bsico de la regla MIME

'photo' => 'mimes:jpeg,bmp,png'


min:value
El campo bajo validacin debe contener un valor mnimo. Cadenas, nmeros y archivos
son evaluados del mismo modo que la regla size.
not_in:foo,bar,...
El campo bajo validacin no debe estar incluido en la lista de valores dados.
numeric
El campo bajo validacin debe contener un valor numrico.
regex:pattern
El campo a validar debe coincidir con la expresin regular dada.
Note: Cuando se utiliza una expresin regex, puede ser necesario especificar reglas en
un array en lugar de utilizar el delimitador pipe "|", especialmente si la expresin regular
contiene un caracter pipe.
required
El campo a validar debe estar presente en la entrada de datos.
required_if:field,value
El campo a validar debe estar presente si el campo field es igual que value.
required_with:foo,bar,...
El campo debe estar presente slo si cualquiera de los otros especificados est presente.
required_with_all:foo,bar,...
El campo a validar debe estar presente nicamente si todos los campos especificados
estn presentes.
required_without:foo,bar,...
El campo a validar debe estar presente slo cuando cualquiera de los otros especificados
no est presente.
required_without_all:foo,bar,...
El campo a validar debe estar presente slo cuando todos los dems especificados no
estn presentes.
same:field

El campo field debe coincidir con el campo bajo validacin.


size:value
El campo bajo validacin debe tener un tamao que coincida con value. Para
cadenas,

value

corresponde

al

nmero

de

caracteres.

Para

datos

numricos, value corresponde a un valor entero. Para archivos, size corresponde al


tamao del archivo en kilobytes.
unique:table,column,except,idColumn
El campo a validar debe ser nico en la tabla de la base de datos. Si la opcin column no
se especifica, se usar el nombre del campo.
Uso bsico de la regla 'unique'
'email' => 'unique:users'
Especificar una nombre de columna personalizada
'email' => 'unique:users,email_address'
Forzar una regla 'unique' a ignorar un ID dado
'email' => 'unique:users,email_address,10'
Aadir clusulas 'where' adicionales
Puedes adems especificar ms condiciones que sern aadidas como clausulas "where"
a la consulta:
'email' => 'unique:users,email_address,NULL,id,account_id,1'
En la regla anterior, nicamente las filas con un account_id de 1 se incluiran en la
comprobacin 'unique'.
url
El campo a validar debe estar formateado como una URL.
Nota: Esta funcin utiliza el mtodo filter_var de PHP

ELOQUENT
(Gaitan, 2013) dice: Una de las cosas ms densas, pero necesarias al desarrollar una
aplicacin web es tener que crear las consultas para la base de datos, adems que estas
consultas suelen repetirse entre tabla y tabla. Insertar registros, modificarlos,
eliminarlos, buscar un registro por su id, listar registros, etc. Eloquent es una clase ORM
de Laravel que nos permitir solucionar este problema.
Para comenzar vamos a crear un modelo para representar la tabla que creamos, la
tablausers. As que dentro de nuestro proyecto vamos a app -> models y creamos un
archivo php llamado User.php. Probablemente ya exista un modelo con este nombre ya
que Laravel 4 lo crea por defecto, de ser as lo eliminamos. El cdigo quedar as:
<?php
class User extends Eloquent {
}
?>
Ahora, tal vez no lo hayas notado, pero la tabla se en la base de datos para guardar se
llama users, mientras que el modelo es User. Bueno, esto se debe a una modalidad de
Laravel en donde las tablas se escriben en plural, mientras que los modelos con la primer
letra en mayscula y en singular. Si nuestra tabla tuviese otro nombre que no respetara
esta regla entonces tendramos que forzar a nuestro modelo a llamar a una tabla con
otro nombre, agregando una propiedad protegida $table de esta forma:
<?php
class User extends Eloquent {
protected $table = 'otro_nombre_para_la_tabla';
}
?>
Pero como no es nuestro caso, entonces dejaremos la clase cmo estaba antes y Laravel
dar por hecho que el modelo User har referencia a la tabla users.
Ok, ahora, para continuar vamos a aprender qu es lo que podemos hacer gracias
aEloquent.
En primer lugar vamos a ir a app -> routes.php y vamos a agregar las siguientes lneas:
Route::get('test', function(){

//Ac escribiremos el cdigo.


});
Nada, nuevo, una nueva accin para nuestras rutas, pero esta nos servir para ir viendo
lo que aprenderemos de Eloquent. As que todos los ejemplos que d a continuacin
pods escribirlos dentro de esa funcin y probarlo en:
http://localhost:8000/test
Adems debemos asegurarnos de tener el servicio de base de datos corriendo, en mi
caso MySQL e iniciar nuestro servidor con:
php artisan serve
Esto ya deberas saberlo, pero por si acaso lo repasamos.
Insertar registros
Para insertar nuevos registros debemos usar el mtodo save().
Recordemos que en nuestro modelo la forma de representar un registro es mediante
objetos instanciados de ese modelo, por tanto para crear un nuevo usuario deberamos
hacer esto:
Route::get('test', function() {
$user = new User();
$user->email = 'cosme_fulanito@mail.com';
$user->real_name = 'cosme';
$user->password = Hash::make('1234');
$user->level = 1;
$user->active = true;
$user->save();
return 'Usuario insertado correctamente.';
});
Bien, en primer lugar creamos un nuevo objeto User, si ya has trabajado con objetos
esto no debera ser un problema para vos. Luego le seteamos las propiedades, que por
supuesto tienen el mismo nombre que las columnas de la tabla users.
$user = new User();
$user->email = 'cosme_fulanito@mail.com';

$user->real_name = 'cosme';
$user->password = Hash::make('1234');
$user->level = 1;
$user->active = true;
Algo a tener en cuenta es que el password lo guardamos hasheado, gracias a la
claseHash y el mtodo make(). Seguro, si ya trabajaste con bases de datos y con
contraseas sabrs que por una cuestin de seguridad las contraseas deberan
guardarse hasheadas o encriptadas.
Finalmente para guardar el registro usamos el mtodo save() y retornamos un mensaje
indicando que el registro se ha insertado:
$user->save();
return 'Usuario insertado correctamente.';
Recuperar registros por su id
Si quisiramos recuperar, por ejemplo, el registro que acabamos de insertar por su id o
clave primaria deberamos usar el mtodo esttico find() que recibir como parmetro
el id del usuario y nos devolver un objeto con el registro del mismo:
$user = User::find(1);
return $user->real_name;
Donde es 1, debe ir el id correspondiente.
Modificar registros
Combinando lo ltimo que acabamos de aprender podemos modificar un registro,
primero recuperndolo con el mtodo find(), seteando la propiedades que queremos
modificar y por ltimo llamar al mtodo save() para que los cambios se realicen en la
base de datos:
Route::get('test', function() {
$user = User::find(1);
$user->real_name = 'fulanito';
$user->save();
return 'El registro ha sido modificado';
});

Si lo que en cambio queremos hacer es recuperar un registro por una propiedad


especfica, por ejemplo el real_name deberamos hacer algo como esto:
Route::get('test', function() {
$user = User::where('real_name', 'fulanito')->first();
return $user->email;
});
Como vemos en el ejemplo, llamamos al mtodo where() desde la clase User, este
mtodo recibir como primer parmetro el nombre de la propiedad y como segundo el
valor. Adems debemos encadenar el resultado con el mtodo first() que nos devolver
el primer registro que encuentre. En el caso del real_name no debera haber dos
registros con el mismo, pero igual debemos usarlo de esta forma.
Eliminar registros
Para eliminar registros debemos usar la misma lgica que para modificar, slo que en
lugar de usar el mtodo save() lo haremos con delete():
Route::get('test', function() {
$user = User::find(1);
$user->delete();
return 'Registro eliminado';
});
Recuperar lista de registros
Si quisiramos recuperar por ejemplo la lista de usuarios que han sido insertados
podemos llamar al mtodo all() que como su nombre lo indica nos devolver todos los
usuarios:
Route::get('test', function() {
$users = User::all();
$nombres = '';
foreach($users as $item){
$nombres .= $item->real_name . '<br />';
}
return $nombres;

});
Pero si en cambio queremos hacer un filtro, por ejemplo recuperar todos los usuarios
con el valor de la propiedad active en true, y ordenados por el real_name deberamos
hacer algo como esto:
Route::get('test', function() {
$users = User::where('active', true)->orderBy('real_name')->get();
$nombres = '';
foreach($users as $item){
$nombres .= $item->real_name . '<br />';
}
return $nombres;
});
Como se ve en el ejemplo a travs de la clase User llamamos el mtodo where(), para
traer todos los registros que cumplan con esa condicin, que sean active true, adems
encadenamos el mtodo orderBy() para ordenar esos registros por su real_name, y
finalmente llamamos al mtodo get() que nos devolver un array con los registros
encontrados.
BIBLIOGRAFIA:

http://laraveles.com/docs/4.1/validation#rule-accepted

http://fernando-gaitan.com.ar/laravel-parte-5-modelos/

You might also like