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:

