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 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::models('menus'); | + | Load::models('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 { | ||
+ | Flash::valid('Operación exitosa'); | ||
//enrutando por defecto al index del controller | //enrutando por defecto al index del controller | ||
− | return | + | return Router::redirect(); |
− | |||
− | |||
} | } | ||
− | |||
− | |||
− | |||
} | } | ||
} | } | ||
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 por defecto al index del controller | //enrutando por defecto al index del controller | ||
− | return | + | return Router::redirect(); |
} | } | ||
} | } | ||
+ | ?> | ||
</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> | ||
− | + | // ejemplo manual de paginador, hay partial listos en formato digg, clasic,.... | |
− | <?php if($listMenus->prev) echo Html:: | + | <?php if($listMenus->prev) echo Html::link("menus/index/$listMenus->prev/", '<< Anterior |'); ?> |
− | <?php if($listMenus->next) echo Html:: | + | <?php if($listMenus->next) echo Html::link("menus/index/$listMenus->next/", 'Próximo >>'); ?> |
</div> | </div> | ||
</source> | </source> | ||
Línea 172: | Línea 178: | ||
'''''[apps]/views/menus/create.phtml''''' | '''''[apps]/views/menus/create.phtml''''' | ||
<source lang=php> | <source lang=php> | ||
− | |||
<?php View::content(); ?> | <?php View::content(); ?> | ||
<h3>Crear menu<h3> | <h3>Crear menu<h3> | ||
Línea 178: | Línea 183: | ||
<?php echo Form::open(); // por defecto llama a la misma url ?> | <?php echo Form::open(); // por defecto llama a la misma url ?> | ||
− | <label>Nombre | + | <label for="menus.nombre">Nombre</label> |
− | <?php echo Form::text('menus.nombre') ? | + | <?php echo Form::text('menus.nombre') ?> |
− | <label>Título | + | <label for="menus.titulo">Título</label> |
− | <?php echo Form::text('menus.titulo') ? | + | <?php echo Form::text('menus.titulo') ?> |
<?php echo Form::submit('Agregar') ?> | <?php echo Form::submit('Agregar') ?> | ||
<?php echo Form::close() ?> | <?php echo Form::close() ?> | ||
− | |||
</source> | </source> | ||
Línea 193: | Línea 197: | ||
'''''[apps]/views/menus/edit.phtml''''' | '''''[apps]/views/menus/edit.phtml''''' | ||
<source lang=php> | <source lang=php> | ||
− | |||
<?php View::content(); ?> | <?php View::content(); ?> | ||
<h3>Editar menu<h3> | <h3>Editar menu<h3> | ||
Línea 199: | Línea 202: | ||
<?php echo Form::open(); // por defecto llama a la misma url ?> | <?php echo Form::open(); // por defecto llama a la misma url ?> | ||
− | <label>Nombre | + | <label for="menus.nombre">Nombre</label> |
− | <?php echo Form::text('menus.nombre') ? | + | <?php echo Form::text('menus.nombre') ?> |
− | <label>Título | + | <label for="menus.titulo">Título</label> |
− | <?php echo Form::text('menus.titulo') ? | + | <?php echo Form::text('menus.titulo') ?> |
<?php echo Form::hidden('menus.id') ?> | <?php echo Form::hidden('menus.id') ?> | ||
Línea 209: | Línea 212: | ||
<?php echo Form::close() ?> | <?php echo Form::close() ?> | ||
− | |||
</source> | </source> | ||
Línea 216: | Línea 218: | ||
* '''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/ |