Edición de «Validando formulario con clase kumbia validate»
De KumbiaPHP Framework Wiki
Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así efectuar la reversión.
Revisión actual | Tu texto | ||
Línea 1: | Línea 1: | ||
− | + | Esta practica esta basada en la version 1 Spirit beta2 de KumbiaPHP Framework. | |
Muchas veces necesitamos usar formularios para que una empresa/persona contacte con nosotros a través de nuestra web. Para validar los datos enviados y evitar un mal uso del mismo, el equipo de Kumbia ha desarrollado una nueva clase llamada Validate desvinculada de las validaciones propias de los modelos basados en ActiveRecord. | Muchas veces necesitamos usar formularios para que una empresa/persona contacte con nosotros a través de nuestra web. Para validar los datos enviados y evitar un mal uso del mismo, el equipo de Kumbia ha desarrollado una nueva clase llamada Validate desvinculada de las validaciones propias de los modelos basados en ActiveRecord. | ||
− | Para este tutorial necesitaremos como mínimo un controller, un modelo y una vista. Si descargamos el paquete KumbiaPHP del GitHub podemos usar el controller por defecto y su vista | + | Para este tutorial necesitaremos como mínimo un controller, un modelo y una vista. Si descargamos el paquete KumbiaPHP del GitHub podemos usar el controller por defecto y su vista. |
− | + | '''Modelo: sendform.php''' | |
<source lang=php line> | <source lang=php line> | ||
class SendForm { | class SendForm { | ||
+ | |||
+ | private $reglas = array(); | ||
+ | private $datos = array(); | ||
− | private function | + | private function __construct($datos) { |
+ | |||
+ | $this->datos = $datos; | ||
+ | |||
+ | } | ||
+ | |||
+ | private function __reglas() { | ||
− | + | $this->reglas = array( | |
− | 'NombreCompleto' => | + | 'NombreCompleto' => array( |
− | 'required' => | + | 'required'=>array('error'=>'Rellene su nombre.'), |
− | 'alpha' | + | 'alpha' =>array('error'=>'Nombre incompleto o incorrecto.') |
− | + | ), | |
− | 'Email' => | + | 'Email' => array( |
− | 'required' => | + | 'required'=>array('error'=>'Rellene el email.'), |
− | 'email' | + | 'email' => array('error'=>'Email incorrecto.') |
− | + | ), | |
− | 'Movil' => | + | 'Movil' => array( |
− | 'required' => | + | 'required'=>array('error'=>'Rellene el teléfono / móvil.'), |
− | 'length' | + | 'length' => array('min'=>'9','max'=>'14','error'=>'Teléfono / móvil incorrecto'), |
− | + | 'pattern' => array('regex'=>'[0-9]\+.-\ ', 'error'=>'Teléfono no válido') | |
− | + | ), | |
− | 'pattern' | + | 'Asunto' => array( |
− | + | 'required'=>array('error'=>'Indique un asunto.'), | |
− | + | ), | |
− | 'Asunto' => | + | 'Mensaje' => array( |
− | 'required' => | + | 'required'=>array('error'=>'Indique un mensaje.'), |
− | + | 'length'=>array('min'=>20, 'error'=>'Si es posible, concrete más en su mensaje.'), | |
− | 'Mensaje' => | + | ) |
− | 'required' => | ||
− | 'length' | ||
− | |||
− | |||
); | ); | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | public function mensaje() { | ||
+ | |||
+ | // Contenido del email | ||
+ | $contenido = '<p>Hola,'; | ||
+ | $contenido .= '<p>'.$data['NombreCompleto'].' quiere contactar por '; | ||
+ | $contenido .= '<b>'. $data['Asunto'].'</b> y comenta lo siguiente:</p>'; | ||
+ | $contenido .= '<p>'.nl2br($data['Mensaje']).'</p>'; | ||
+ | $contenido .= '<p><b>Datos de contacto</b></p>'; | ||
+ | $contenido .= '<p>Empresa: '.$data['Empresa']; | ||
+ | $contenido .= '<br>Cargo: '.$data['CargoEmpresa']; | ||
+ | $contenido .= '<br>Email: '.$data['Email']; | ||
+ | $contenido .= '<br>Teléfono: '.$data['Movil'].'</p>'; | ||
+ | return $contenido; | ||
+ | |||
} | } | ||
+ | |||
+ | public function enviar() { | ||
+ | |||
+ | |||
+ | $validador = new Validate($this->datos, $this->obtenerReglas()); | ||
+ | if (!$validador->exec()) { | ||
+ | $validador->flash(); | ||
+ | } else { | ||
+ | // Enviar Formulario | ||
+ | } | ||
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
</source> | </source> | ||
− | + | '''Vista: index.phtml''' | |
En nuestra vista debemos añadir los controles para los campos del formulario. Hemos usado la nomenclatura contactar.<field> para agrupar en una única variable los datos del formulario. | En nuestra vista debemos añadir los controles para los campos del formulario. Hemos usado la nomenclatura contactar.<field> para agrupar en una única variable los datos del formulario. | ||
Línea 65: | Línea 88: | ||
<div class="container"> | <div class="container"> | ||
− | <? | + | <?php echo Form::open() ?> |
+ | |||
<?php View::content() ?> | <?php View::content() ?> | ||
+ | |||
+ | |||
<fieldset><legend>Contactar</legend> | <fieldset><legend>Contactar</legend> | ||
− | <label | + | <?php echo Form::label('Nombre completo:', 'contactar_NombreCompleto') ?> <?php echo Form::text('contactar.NombreCompleto') ?> |
− | <? | + | <?php echo Form::label('Email:', 'contactar_Email') ?> <?php echo Form::text('contactar.Email') ?> |
− | < | + | <?php echo Form::label('Teléfono / Móvil:', 'contactar_Movil') ?> <?php echo Form::text('contactar.Movil') ?> |
− | + | <?php echo Form::label('Mensaje:', 'contactar_Mensaje') ?> <?php echo Form::textarea('contactar.Mensaje') ?> | |
− | <? | + | |
− | < | + | <?php echo Form::submit('Enviar') ?> |
− | |||
− | <? | ||
− | < | ||
− | |||
− | <? | ||
− | |||
− | <? | ||
</fieldset> | </fieldset> | ||
− | <? | + | |
+ | <?php echo Form::close() ?> | ||
+ | |||
</div> | </div> | ||
+ | |||
</source> | </source> | ||
− | + | '''Controller: index.phtml''' | |
<source lang=php line> | <source lang=php line> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</source> | </source> | ||
− | |||
− | |||
− | |||
− | |||
− | [ | + | [ En desarrollo ] |