Edición de «Beta2 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 4: | Línea 4: | ||
}} | }} | ||
{{cleanupbox | {{cleanupbox | ||
− | |texto ='''Este ejemplo es funcional para la [[KumbiaPHP_Framework_Versión_1.0_Beta2| Versión Beta2 en desarrollo]]''' | + | |texto ='''Este ejemplo es funcional para la [[KumbiaPHP_Framework_Versión_1.0_Beta2| Versión Beta2 en desarrollo]]'''<br /> |
}} | }} | ||
== Introducción == | == Introducción == | ||
Línea 10: | Línea 10: | ||
'''El CRUD de la beta1 sigue funcionando igual en la beta2, pero queda desaconsejado.''' | '''El CRUD de la beta1 sigue funcionando igual en la beta2, pero queda desaconsejado.''' | ||
− | En la versión 1.0 se podrá usar de las 2 maneras. Y la 1.2 que saldrá junto a la 1. | + | En la versión 1.0 se podrá usar de las 2 maneras. Y la 1.2 que saldrá junto a la 1.2 sólo se usará lo nuevo y se eliminará lo desaconsejado. |
== Configurando database.ini == | == Configurando database.ini == | ||
Línea 41: | Línea 41: | ||
public function getMenus($page, $ppage=20) | public function getMenus($page, $ppage=20) | ||
{ | { | ||
− | return $this->paginate("page: $page", "per_page: $ppage" | + | return $this->paginate("page: $page", "per_page: $ppage"); |
} | } | ||
} | } | ||
Línea 50: | Línea 50: | ||
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 Objetos]] | ||
'''''[app]/controllers/menus_controller.php:''''' | '''''[app]/controllers/menus_controller.php:''''' | ||
Línea 58: | Línea 59: | ||
* Carga del modelo Menus... | * Carga del modelo Menus... | ||
*/ | */ | ||
− | Load:: | + | Load::model('menus'); |
− | class MenusController extends | + | class MenusController extends ApplicationController { |
/** | /** | ||
* Obtiene una lista para paginar los menus | * Obtiene una lista para paginar los menus | ||
Línea 89: | Línea 90: | ||
$menu = new Menus(Input::post('menus')); | $menu = new Menus(Input::post('menus')); | ||
//En caso que falle la operación de guardar | //En caso que falle la operación de guardar | ||
− | if($menu-> | + | if(!$menu->save()){ |
+ | Flash::error('Falló Operación'); | ||
+ | //se hacen persistente los datos en el formulario | ||
+ | $this->menus = Input::post('menus'); | ||
+ | /** | ||
+ | * NOTA: para que la autocarga aplique de forma correcta, es necesario que llame a la variable de instancia | ||
+ | * igual como esta el model de la vista, en este caso el model es "menus" y quedaria $this->menus | ||
+ | */ | ||
+ | }else{ | ||
Flash::valid('Operación exitosa'); | Flash::valid('Operación exitosa'); | ||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
} | } | ||
Línea 102: | Línea 106: | ||
/** | /** | ||
* Edita un Registro | * Edita un Registro | ||
− | |||
− | |||
*/ | */ | ||
− | public function edit($id) | + | public function edit($id = null) |
{ | { | ||
$menu = new Menus(); | $menu = new Menus(); | ||
− | + | if($id != null){ | |
+ | //Aplicando la autocarga de objeto, para comenzar la edición | ||
+ | $this->menus = $menu->find($id); | ||
+ | } | ||
//se verifica si se ha enviado el formulario (submit) | //se verifica si se ha enviado el formulario (submit) | ||
if(Input::hasPost('menus')){ | if(Input::hasPost('menus')){ | ||
− | if($ | + | if(!$menus->update(Input::post('menus'))){ |
− | + | Flash::error('Falló Operación'); | |
− | // | + | //se hacen persistente los datos en el formulario |
− | + | $this->menus = Input::post('menus'); | |
} else { | } else { | ||
− | Flash:: | + | Flash::valid('Operación exitosa'); |
+ | //enrutando al index para listar los menus | ||
+ | return Router::redirect('menus'); | ||
} | } | ||
− | |||
− | |||
− | |||
} | } | ||
} | } | ||
Línea 128: | Línea 132: | ||
* Eliminar un menu | * Eliminar un menu | ||
* | * | ||
− | * @param int $id | + | * @param int $id |
*/ | */ | ||
− | public function del($id) | + | public function del($id = null) |
{ | { | ||
− | $menu = new Menus(); | + | if ($id) { |
− | + | $menu = new Menus(); | |
+ | if (!$menu->delete($id)) { | ||
+ | Flash::error('Falló Operación'); | ||
+ | }else{ | ||
Flash::valid('Operación exitosa'); | Flash::valid('Operación exitosa'); | ||
− | + | } | |
− | |||
} | } | ||
− | + | //enrutando al index para listar los menus | |
− | //enrutando | + | return Router::redirect('menus'); |
− | return | ||
} | } | ||
} | } | ||
+ | ?> | ||
</source> | </source> | ||
Línea 151: | Línea 157: | ||
<source lang=php> | <source lang=php> | ||
<div class="content"> | <div class="content"> | ||
− | <?php View::content(); ?> | + | <?php echo View::content(); ?> |
<h3>Menus</h3> | <h3>Menus</h3> | ||
<ul> | <ul> | ||
<?php foreach ($listMenus->items as $item) : ?> | <?php foreach ($listMenus->items as $item) : ?> | ||
<li> | <li> | ||
− | <?php echo Html:: | + | <?php echo Html::link("menus/edit/$item->id/", 'Editar') ?> |
− | <?php echo Html:: | + | <?php echo Html::link("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 169: | ||
</ul> | </ul> | ||
− | + | <?php if($listMenus->prev) echo Html::link("menus/index/$listMenus->prev/", '<< Anterior |'); ?> | |
− | <?php if($listMenus->prev) echo Html:: | + | <?php if($listMenus->next) echo Html::link("menus/index/$listMenus->next/", 'Próximo >>'); ?> |
− | <?php if($listMenus->next) echo Html:: | ||
</div> | </div> | ||
</source> | </source> | ||
Línea 172: | Línea 177: | ||
'''''[apps]/views/menus/create.phtml''''' | '''''[apps]/views/menus/create.phtml''''' | ||
<source lang=php> | <source lang=php> | ||
− | |||
<?php View::content(); ?> | <?php View::content(); ?> | ||
− | + | <?php echo Form::open('menus/create/') ?> | |
− | + | <table> | |
− | <?php echo Form::open( | + | <tr> |
− | + | <td>Nombre</td> | |
− | < | + | <td><?php echo Form::text(array('menus.nombre')) ?></td> |
− | <?php echo Form::text('menus.nombre') ?></ | + | </tr> |
− | + | <tr> | |
− | < | + | <td>Titulo</td> |
− | <?php echo Form::text('menus.titulo') ?></ | + | <td><?php echo Form::text('menus.titulo') ?></td> |
− | + | </tr> | |
− | <?php echo Form::submit('Agregar') ?> | + | <tr> |
− | + | <td></td> | |
+ | <td><?php echo Form::submit('Agregar') ?></td> | ||
+ | </tr> | ||
+ | </table> | ||
<?php echo Form::close() ?> | <?php echo Form::close() ?> | ||
− | |||
</source> | </source> | ||
Línea 193: | Línea 199: | ||
'''''[apps]/views/menus/edit.phtml''''' | '''''[apps]/views/menus/edit.phtml''''' | ||
<source lang=php> | <source lang=php> | ||
− | |||
<?php View::content(); ?> | <?php View::content(); ?> | ||
− | + | <?php echo Form::open('menus/edit/') ?> | |
− | + | <table> | |
− | <?php echo Form::open( | + | <tr> |
− | + | <td>Nombre</td> | |
− | < | + | <td><?php echo Form::text('menus.nombre') ?></td> |
− | <?php echo Form::text('menus.nombre') ?></ | + | </tr> |
− | + | <tr> | |
− | < | + | <td>Titulo</td> |
− | <?php echo Form::text('menus.titulo') ?></ | + | <td><?php echo Form::text('menus.titulo') ?></td> |
− | + | </tr> | |
+ | <tr> | ||
+ | <td> </td> | ||
<?php echo Form::hidden('menus.id') ?> | <?php echo Form::hidden('menus.id') ?> | ||
− | <?php echo Form::submit('Actualizar') ?> | + | <td><?php echo Form::submit('Actualizar') ?></td> |
− | + | </tr> | |
+ | </table> | ||
<?php echo Form::close() ?> | <?php echo Form::close() ?> | ||
− | |||
</source> | </source> | ||
Línea 216: | Línea 223: | ||
* '''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 | + | NOTA: index/ se puede pasar de forma implícita o no KumbiaPHP en caso que no se le pase una acción |
− | KumbiaPHP en caso que no se le pase una acción | + | 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/ |