Sunteți pe pagina 1din 7

Universidad

Las Amricas

Framework Laravel

PRACTICA 3: VALIDACION DE FORMULARIOS


Objetivos: Implementar la validacin de formularios.
CREACION DEL CONTROLADOR
La siguiente prcticao consiste en la creacin de una vista miformulario.blade.php que
contiene un simple formulario que contiene un campo de texto el cual ser validado al
enviar este formulario va post.
CREACION DEL CONTROLADOR
Agregar el siguiente mtodo al controlador HomeController.php
..
public function miFormulario(){
return View("home.miformulario");
}
..
CONFIGURACION DE LA RUTA
A continuacin agregamos la siguiente ruta
routes.php
Route::get("home/miformulario", "HomeController@miFormulario");
CREACION DE LA VISTA
Creamos la vista miformulario.blade.php y le agregamos el siguiente cdigo:
@extends('layouts.home')
@section('title', 'Mi formulario')
@section('description', 'Validar Mi formulario')
@section('keywords', 'validar, mi, formulario')
@section('content')
<h1>Mi Formulario</h1>
<form method="post" action="{{url('home/validarmiformulario')}}">
<div class="form-group">
<label for="nombre">Nombre: </label>
<input
type="text"
name="nombre"
class="form-control"
value="{{Input::old('nombre')}}" />
<div class="text-danger">{{$errors->formulario->first('nombre')}}</div>
</div>
{{csrf_field()}}
<button type="submit" class="btn btn-primary">Enviar</button>
</form>
@stop

Crear una clase para la validacin en la siguiente ruta app\Http\Requests, guardar el


archivo como MiFormulario.php

Ing. Ricardo Inquilla Quispe / ricardoinquilla@gmail.com / Cel: 9526397571/2

Universidad
Las Amricas

Framework Laravel

<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class MiFormulario extends Request{
protected $redirect = "home/miformulario";
public function rules(){
return [
'nombre' => 'required|min:3|max:12|regex:/^[a-z]+
$/i',
];
}
public function messages(){
return [
'nombre.required' => 'El campo nombre es requerido',
'nombre.min' => 'El mnimo permitido son 3 caracteres',
'nombre.max' => 'El mximo permitido son 12 caracteres',
'nombre.regex' => 'Slo se aceptan letras',
];
}
public function response(array $errors){
return redirect($this->redirect)
->withErrors($errors, 'formulario')
->withInput();
}
public function authorize(){
return true;
}
}
Importar las clases Validator y MiFormulario al controlador HomeController.php
use App\Http\Requests\MiFormulario;
use Validator;
Agregamos el siguiente mtodo al controlador HomeControlador.php
public function validarMiFormulario(MiFormulario $formulario){
$validator = Validator::make(
$formulario->all(),
$formulario->rules(),
$formulario->messages()
);
if ($validator->valid()){
return "OK";
}
Ing. Ricardo Inquilla Quispe / ricardoinquilla@gmail.com / Cel: 9526397572/2

Universidad
Las Amricas

Framework Laravel

}
Enlazamos el mtodo anterior configurando con la siguiente ruta
Route::post("home/validarmiformulario", "HomeController@validarMiFormulario");
Realizamos una configuracion del archivo app.php para el funcionamiento correcto del
formulario
'Input' => Illuminate\Support\Facades\Input::class,

A continuacin probamos la validacin


del
formulario:
http://localhost/holamundolaravel/public/
home/miformulario
Al hacer click en el botn enviar y no
escribir el
nombre
obtenemos lo
siguiente

Ing. Ricardo Inquilla Quispe / ricardoinquilla@gmail.com / Cel: 9526397573/2

VALIDACION DE FORMULARIOS UTILIZANDO AJAX


miformulario.blade.php
@extends('layouts.home')
@section('title', 'Mi formulario')
@section('description', 'Validar Mi formulario')
@section('keywords', 'validar, mi, formulario')
@section('content')
<h1>Mi Formulario</h1>
<div class="text-success" id='result'>
@if(Session::has('message'))
{{Session::get('message')}}
@endif
</div>
<form method="post" action="{{url('home/validarmiformulario')}}" id='form'>
<div class="form-group">
<label for="nombre">Nombre: </label>
<input
type="text"
name="nombre"
class="form-control"
value="{{Input::old('nombre')}}" />
<div class="text-danger" id='error_nombre'>{{$errors->formulario>first('nombre')}}</div>
</div>
<div class="form-group">
<label for="email">Email: </label>
<input
type="text"
name="email"
class="form-control"
value="{{Input::old('email')}}" />
<div class="text-danger" id='error_email'>{{$errors->formulario>first('email')}}</div>
</div>
{{csrf_field()}}
<button type="submit" class="btn btn-primary">Enviar</button>
</form>
<script>
$(function(){
$("#form").submit(function(e){
var fields = $(this).serialize();
$.post("{{url('home/validarmiformulario')}}", fields, function(data){
if(data.valid !== undefined){
$("#result").html("Enhorabuena formulario enviado correctamente");
$("#form")[0].reset();
$("#error_nombre").html('');
$("#error_email").html('');
}
else{
$("#error_nombre").html('');
$("#error_email").html('');
if (data.nombre !== undefined){

$("#error_nombre").html(data.nombre);
}
if (data.email !== undefined){
$("#error_email").html(data.email);
}
}
});
return false;
});
});
</script>
@stop
Miformulario.php
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class MiFormulario extends Request{
protected $redirect = "home/miformulario";
public function rules(){
return [
'nombre' => 'required|min:3|max:12|regex:/^[a-z]+$/i',
'email' => 'required|email',
];
}
public function messages(){
return [
'nombre.required' => 'El campo nombre es requerido',
'nombre.min' => 'El mnimo permitido son 3 caracteres',
'nombre.max' => 'El mximo permitido son 12 caracteres',
'nombre.regex' => 'Slo se aceptan letras',
'email.required' => 'El campo email es requerido',
'email.email' => 'El formato de email es incorrecto',
];
}
public function response(array $errors){
if ($this->ajax()){
return response()->json($errors, 200);
}
else
{
return redirect($this->redirect)
->withErrors($errors, 'formulario')
->withInput();
}
}
public function authorize(){

return true;
}
}
Modificamos el metodo validarmiFormulario del controlador HomeController.php
..
public function validarMiFormulario(MiFormulario $formulario){
$validator = Validator::make(
$formulario->all(),
$formulario->rules(),
$formulario->messages()
);
if ($validator->valid()){
if ($formulario->ajax()){
return response()->json(["valid" => true], 200);
}
else{
return redirect('home/miformulario')
->with('message', 'Enhorabuena formulario enviado correctamente');
}
}
}
http://localhost/holamundolaravel/public/home/miformulario

S-ar putea să vă placă și