Edición de «Como hacer un CRUD en KumbiaPHP Framework»
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: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Este ejemplo nos permitirá de manera sencilla conocer y entender la implementación de un CRUD (Create, Read, Update y Delete en inglés) sin la necesidad de un Scaffold (<s>StandardForm</s>) y un manejo correcto del MVC en KumbiaPHP. | Este ejemplo nos permitirá de manera sencilla conocer y entender la implementación de un CRUD (Create, Read, Update y Delete en inglés) sin la necesidad de un Scaffold (<s>StandardForm</s>) y un manejo correcto del MVC en KumbiaPHP. | ||
Línea 13: | Línea 5: | ||
== Modelo == | == Modelo == | ||
− | '''Crear el Modelo''' el cual esta viene dado por la | + | '''Crear el Modelo''' el cual esta viene dado por la difinición de una tabla en la BD, para efecto del ejemplo creamos la siguiente tabla (la misma del ejemplo de [[AutoCarga_de_Objetos_KumbiaPHP | Auto Carga de Objetos]]) |
<pre> | <pre> | ||
Línea 21: | Línea 13: | ||
nombre varchar(100), | nombre varchar(100), | ||
titulo varchar(100) not null, | titulo varchar(100) not null, | ||
− | primary key(id) | + | primary key(id), |
) | ) | ||
</pre> | </pre> | ||
Línea 47: | Línea 39: | ||
El controlador es encargado de atender las peticiones del cliente (ej. browser) y a su vez de darle una respuesta. En este controller vamos a definir todas las operaciones CRUD que necesitamos. | El controlador es encargado de atender las peticiones del cliente (ej. browser) y a su vez de darle una respuesta. En este controller vamos a definir todas las operaciones CRUD que necesitamos. | ||
− | En esta parte es importante que se haya visto el [[AutoCarga_de_Objetos_KumbiaPHP | Tutorial de Auto Carga de | + | En esta parte es importante que se haya visto el [[AutoCarga_de_Objetos_KumbiaPHP | Tutorial de Auto Carga de Obejtos]] |
'''''[app]/controllers/menus_controller.php:''''' | '''''[app]/controllers/menus_controller.php:''''' | ||
− | <source lang="php" | + | <source lang="php"> |
<?php | <?php | ||
− | |||
− | |||
− | |||
− | |||
− | |||
class MenusController extends ApplicationController { | class MenusController extends ApplicationController { | ||
+ | //Carga del modelo Menus, porque tenemos la autocarga de modelos desactivada (off) | ||
+ | public $models = array('menus'); | ||
/** | /** | ||
Línea 65: | Línea 54: | ||
public function index($page=1) | public function index($page=1) | ||
{ | { | ||
− | + | $this->listMenus = $this->Menus->getMenus($page); | |
− | $this->listMenus = $ | ||
} | } | ||
Línea 96: | Línea 84: | ||
* igual como esta el model de la vista, en este caso el model es "menus" y quedaria $this->menus | * igual como esta el model de la vista, en este caso el model es "menus" y quedaria $this->menus | ||
*/ | */ | ||
− | |||
− | |||
} | } | ||
} | } | ||
Línea 107: | Línea 93: | ||
public function edit($id = null) | public function edit($id = null) | ||
{ | { | ||
− | + | if($id != null){ | |
− | |||
//Aplicando la autocarga de objeto, para comenzar la edición | //Aplicando la autocarga de objeto, para comenzar la edición | ||
− | $this->menus = $ | + | $this->menus = $this->Menus->find($id); |
} | } | ||
//se verifica si se ha enviado el formulario (submit) | //se verifica si se ha enviado el formulario (submit) | ||
if($this->has_post('menus')){ | if($this->has_post('menus')){ | ||
− | if(!$ | + | if(!$this->Menus->update($this->post('menus'))){ |
Flash::error('Falló Operación'); | Flash::error('Falló Operación'); | ||
//se hacen persistente los datos en el formulario | //se hacen persistente los datos en el formulario | ||
$this->menus = $this->post('menus'); | $this->menus = $this->post('menus'); | ||
} else { | } else { | ||
− | Router::route_to('action: index'); | + | Router::route_to('action: index', 'id: 1'); |
} | } | ||
} | } | ||
Línea 132: | Línea 117: | ||
public function del($id = null) | public function del($id = null) | ||
{ | { | ||
− | |||
if ($id) { | if ($id) { | ||
− | if (!$ | + | if (!$this->Menus->delete($id)) { |
Flash::error('Falló Operación'); | Flash::error('Falló Operación'); | ||
} | } | ||
} | } | ||
//enrutando al index para listar los menus | //enrutando al index para listar los menus | ||
− | Router::route_to('action: index'); | + | Router::route_to('action: index', 'id: 1'); |
} | } | ||
} | } | ||
+ | ?> | ||
</source> | </source> | ||
Línea 148: | Línea 133: | ||
'''''[apps]/views/menus/index.phtml''''' | '''''[apps]/views/menus/index.phtml''''' | ||
− | <source lang= | + | <source lang=php> |
<div class="content"> | <div class="content"> | ||
<?php echo View::content(); ?> | <?php echo View::content(); ?> | ||
Línea 155: | Línea 140: | ||
<?php foreach ($listMenus->items as $item) : ?> | <?php foreach ($listMenus->items as $item) : ?> | ||
<li> | <li> | ||
− | |||
<?php echo link_to(array("menus/edit/$item->id/", 'Editar')) ?> | <?php echo link_to(array("menus/edit/$item->id/", 'Editar')) ?> | ||
− | <?php echo link_to(array("menus/del/$item->id/", 'Borrar')) ? | + | <?php echo link_to(array("menus/del/$item->id/", 'Borrar')) ?> |
<strong><?php echo $item->nombre ?> - <?php echo $item->titulo ?></strong> | <strong><?php echo $item->nombre ?> - <?php echo $item->titulo ?></strong> | ||
</li> | </li> | ||
Línea 163: | Línea 147: | ||
</ul> | </ul> | ||
− | <?php if($listMenus->prev) echo | + | <?php if($listMenus->prev) echo link_to(array("menus/index/$listMenus->prev/", '<< Anterior |')); ?> |
− | <?php if($listMenus->next) echo | + | <?php if($listMenus->next) echo link_to(array("menus/index/$listMenus->next/", 'Próximo >>')); ?> |
</div> | </div> | ||
</source> | </source> | ||
Línea 170: | Línea 154: | ||
'''''[apps]/views/menus/create.phtml''''' | '''''[apps]/views/menus/create.phtml''''' | ||
− | <source lang= | + | <source lang=php> |
<?php View::content(); ?> | <?php View::content(); ?> | ||
<?php echo form_tag('menus/create/') ?> | <?php echo form_tag('menus/create/') ?> | ||
Línea 192: | Línea 176: | ||
'''''[apps]/views/menus/edit.phtml''''' | '''''[apps]/views/menus/edit.phtml''''' | ||
− | <source lang= | + | <source lang=php> |
<?php View::content(); ?> | <?php View::content(); ?> | ||
<?php echo form_tag('menus/edit/') ?> | <?php echo form_tag('menus/edit/') ?> | ||
Línea 217: | Línea 201: | ||
* '''index''' es la acción para listar http://localhost/menus/index/ | * '''index''' es la acción para listar http://localhost/menus/index/ | ||
− | NOTA: index/ se puede pasar de forma implícita o no KumbiaPHP en caso que no se le pase una acción | + | NOTA: index/ se puede pasar de forma implícita o no KumbiaPHP en caso que no se le pase una acción buscara por defecto un index, es decir si colocamos |
− | buscara por defecto un index, es decir si colocamos | ||
http://localhost/menus/ | http://localhost/menus/ | ||
* '''create''' crea un menu en la Base de Datos http://localhost/menus/create/ | * '''create''' crea un menu en la Base de Datos http://localhost/menus/create/ | ||
* Las acciones '''del''' y '''edit''' a ambas se debe entrar desde el index, ya que reciben el parámetros a editar o borrar según el caso. | * Las acciones '''del''' y '''edit''' a ambas se debe entrar desde el index, ya que reciben el parámetros a editar o borrar según el caso. | ||
[[Categoría:Tutoriales KumbiaPHP]] | [[Categoría:Tutoriales KumbiaPHP]] | ||
− | |||
− | |||
− | |||
− | |||
− |