Últimos artículos
Loading...
jueves, 31 de diciembre de 2009

Validando datos de un formulario en kumbiaPHP.

jueves, diciembre 31, 2009
En este kumbiatuts  les voy a enseñar como validar datos enviados desde un formulario haciendo persistente los datos para no perderlos, validando email y filtrando datos usando el helper "filter".

Vamos  a usar 5 campos para el ejemplo(Crean una tabla con los campos siguientes, a la tabla la llamaremos "posts").

1. id
2. nombre
3. historia
4. fecha
5. email

SQL
 CREATE TABLE IF NOT EXISTS `posts` (

`id` int(11) NOT NULL auto_increment,

`nombre` varchar(100) NOT NULL,

`historia` tinytext NOT NULL,

`fecha` varchar(15) NOT NULL,

`email` varchar(100) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=25 ;

Vamos a nuestra carpeta de la aplicación y creamos el modelo relacionado a la tabla. Usamos el metodo initialize para validar los datos (mas info acá)

PHP models/posts.php
 <?php 

class Posts extends ActiveRecord{

public function initialize(){

$this->validates_email_in('email');

}

}

Creamos nuestro controller.

PHP controllers/acciones_controller.php
 <?php 

class AccionesController extends ApplicationController{

public $models = array('posts');

public function publicar(){

$this->data['title'] = "Publica tu historia";

if($this->has_post('posts')){

$post = new Posts($this->post('posts'));

//insertamos la fecha en formato unix

$post->fecha = time();

/*recibimos el campo historia y le aplicamos el filter "striptags" usamos

* autocarga del helper en boot ini [modules] libs = filter

*/

$post->historia = $this->post('posts.historia', 'striptags');

/*

* Ayuda general

print "<pre>";

print_r($post);

print "</pre>";

*/

//Insertamos los datos recibidos(devuelve true en caso de éxito)

if(!$post->save()){

//Enviar mensaje de error falla la operacion

Flash::error('No se guardo los datos :( ');

$this->posts = $this->post('posts'); //reenviamos los datos al form
}

else{

Flash::success('Se guardo con exito');

}

}

}

}

Nuestra vista:


PHP views/acciones/publicar.phtml
 <?php echo View::content(); ?>

<?php echo form_tag("acciones/publicar"); ?>

Tu Nombre: <?php echo text_field_tag(array('posts.nombre')); ?>

Tu historia: <?php echo text_field_tag(array('posts.historia')); ?>

Tu Email: <?php echo text_field_tag(array('posts.email')); ?>

<?php echo submit_tag("Enviar") ?>

<?php echo end_form_tag() ?>

Probamos nuestro formulario:

http://kumbia/acciones/publicar



Los datos se hacen pesistentes si hay algun campo que no es validado, al usar el filtro "filter" el campo historia lo guardara eliminando los tags html.

Por cierto estoy usando el template global.

PHTML views/templates/default.phtml
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv='Content-type' content='text/html; charset=<?php echo APP_CHARSET ?>' />

<title><?php echo $data['title']; ?></title>

<?php echo stylesheet_link_tag('style') ?>

<?php echo stylesheet_link_tag('exception') ?>

<?php echo stylesheet_link_tags() ?>

</head>

<body>

<div id='content'>

<?php View::content(); ?>

</div>

</body>

</html>


Y eso es todo, espero que vean lo realmente fácil que es trabajar con formularios seguros en Kumbiaphp.
El original esta sacádo de la propia wiki de Kumbiaphp(Como hacer un crud paso a paso).

1 Comentarios:

  1. Me genera el siguiente warning
    Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'Filter::get' was given in C:\xampp\htdocs\kumbiaphp\core\kumbia\controller.php on line 178

    Como lo resuelvo

    ResponderEliminar

 
Toggle Footer