Como hacer un CRUD en KumbiaPHP Framework

De KumbiaPHP Framework Wiki

Este manual nos permitirá de manera sencilla conocer y entender la implementación de un CRUD Crear, Obtener, Actualizar y Borrar (Create, Read, Update y Delete en inglés).


El modelo

Vamos ahora a definir el modelo, este arhivo va en la carpeta models de nuestra aplicación y lo nombramos como: parte_maquina.php

Modelo:

<?php
class ParteMaquina extends ActiveRecord{
    
}
?>

El controlador

El controlador es nuestro eje principal, es quien recibe las peticiones de las vistas y se las pasa al modelo.

<?php
class ParteMaquinaController extends ApplicationController {
    //Carga del modelo ParteMaquina, porque tenemos la autocarga de modelos desactivada (off)
    public $models = array('parte_maquina');   

    /*
    * Función que consulta y pagina la lista de 
    * partes de máquina.
    */
    public function index($page=1) {
        $cons="";
        if(isset ($this->parameters[1])) {
            $cons= "order: ".$this->parameters[1]." asc";
            $this->orden="/".$this->parameters[1];
        }else {
            $this->orden="";
        }
        $this->count = $this->ParteMaquina->count();
        $this->page = $this->ParteMaquina->paginate('per_page: 20', "page: $page");
    }
    
    /*
    * Función que muestra la información
    * partes de máquina. Se consulta a través de su identificador
    */
    public function show($id) {        
        $this->obj = $this->ParteMaquina->find($id);
    }
    
    /*
    * Función que toma los datos del POST
    * crea una ParteMaquina y lo almacena.
    */
    public function create() {
        //Si ha datos 'parte_maquina' en el POST
        if ($this->has_post('parte_maquina')) {
            //Se crea un nuevo objeto tipo ParteMaquina
            $obj = new ParteMaquina($this->post('parte_maquina'));           
            
            //Si guarda el objeto
            if ($obj->save()) {
                //Muestra un mensaje de exito y nos envía a listado
                Flash::notice('Operación Exitosa');
                Router::route_to('controller: parte_maquina','action: index','id: 1');
            } else {
                //Muestra un mensaje de error, 
                Flash::error('No se Guardo!');
                //Cargamos el objeto en una variable, para mostralo en la vista
                $this->$obj = $obj;
                //Se renderiza de nuevo la vista create
                $this->render('create');
            }
        }
    }

    public function edit($id=0) {
        
        if ($this->has_post('parte_maquina')) {
            $obj = new ParteMaquina($this->post('parte_maquina'));
            //$obj->version=  $this->ciudad->version+1;
            if ($obj->update()) {
                Flash::notice('Operación Exitosa');
                Router::route_to('controller: parte_maquina','action: index','id: 1');
            } else {
                Flash::error('No se Guardo!');
                $this->render('edit');
            }
        }else {
            $this->obj = $this->ParteMaquina->find($id);
        }
    }

    public function delete($id=0) {
        $obj  = $this->ParteMaquina->find($id);

        if($obj->delete()) {
            Flash::notice('Operación Exitosa');
        }else{
            Flash::error('No se Eliminó!');
        }

        Router::route_to('controller: parte_maquina','action: index','id: 1');
    }
}
?>

Las vistas

create.phtml

<h1>Crear parte de máquina</h1>
<?php View::content() ?>

<?php echo form_tag("parte_maquina/create")?>

<label for="parte_maquina_nombre">Nombre:</label>
        
<?php echo textupper_field_tag('parte_maquina.nombre') ?>
        
<?php echo submit_tag('Guardar') ?>
<?php echo end_form_tag(); ?>