Edición de «Beta2 CRUD en KumbiaPHP Framework»

Saltar a: navegación, buscar

Advertencia: No has iniciado sesión. Tu dirección IP será visible públicamente si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, junto con otros beneficios.

La edición puede deshacerse. 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í deshacer la edició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", 'order: id desc');
+
         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');// No es necesario en la v1, los modelos se autocargan
+
Load::models('menus');
  
class MenusController extends AppController {
+
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->create()){
+
             if(!$menu->save()){
                Flash::valid('Operación exitosa');
+
                //Eliminamos el POST, si no queremos que se vean en el form
+
                Input::delete();
+
                return;             
+
            }else{
+
 
                 Flash::error('Falló Operación');
 
                 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');
 
             }
 
             }
 
         }
 
         }
Línea 102: Línea 106:
 
     /**
 
     /**
 
     * Edita un Registro
 
     * Edita un Registro
    *
 
    * @param int $id (requerido)
 
 
     */
 
     */
     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($menu->update(Input::post('menus'))){
+
             if(!$menus->update(Input::post('menus'))){
                Flash::valid('Operación exitosa');
+
                //enrutando por defecto al index del controller
+
                return Redirect::to();
+
            } else {
+
 
                 Flash::error('Falló Operación');
 
                 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 al index para listar los menus
 +
                return Router::redirect('menus');
 
             }
 
             }
        } else {
 
            //Aplicando la autocarga de objeto, para comenzar la edición
 
            $this->menus = $menu->find_by_id((int)$id);
 
 
         }
 
         }
 
     }
 
     }
Línea 128: Línea 132:
 
     * Eliminar un menu
 
     * Eliminar un menu
 
     *  
 
     *  
     * @param int $id (requerido)
+
     * @param int $id
 
     */
 
     */
     public function del($id)
+
     public function del($id = null)
 
     {
 
     {
         $menu = new Menus();
+
         if ($id) {
        if ($menu->delete((int)$id)) {
+
            $menu = new Menus();
 +
            if (!$menu->delete($id)) {
 +
                Flash::error('Falló Operación');
 +
            }else{
 
                 Flash::valid('Operación exitosa');
 
                 Flash::valid('Operación exitosa');
        }else{
+
            }
                Flash::error('Falló Operación');
+
 
         }
 
         }
 
+
         //enrutando al index para listar los menus
         //enrutando por defecto al index del controller
+
         return Router::redirect('menus');
         return Redirect::to();
+
 
     }
 
     }
 
}
 
}
 +
?>
 
</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::linkAction("edit/$item->id/", 'Editar') ?>
+
         <?php echo Html::link("menus/edit/$item->id/", 'Editar') ?>
         <?php echo Html::linkAction("del/$item->id/", 'Borrar') ?>
+
         <?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,.... -->
+
     // ejemplo manual de paginador, hay partial listos en formato digg, clasic,....
     <?php if($listMenus->prev) echo Html::linkAction("index/$listMenus->prev/", '<< Anterior |'); ?>
+
     <?php if($listMenus->prev) echo Html::link("menus/index/$listMenus->prev/", '<< Anterior |'); ?>
     <?php if($listMenus->next) echo Html::linkAction("index/$listMenus->next/", 'Próximo >>'); ?>
+
     <?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>
<div class="content">
 
 
<?php View::content(); ?>
 
<?php View::content(); ?>
 
<h3>Crear menu<h3>
 
<h3>Crear menu<h3>
 
+
// por defecto llama a la misma url
<?php echo Form::open(); // por defecto llama a la misma url ?>
+
<?php echo Form::open() ?>
 
          
 
          
         <label>Nombre
+
         <label for="menus.nombre">Nombre</label>
         <?php echo Form::text('menus.nombre') ?></label>
+
         <?php echo Form::text(array('menus.nombre')) ?>
 
          
 
          
         <label>Título
+
         <label for="menus.titulo">Titulo</label>
         <?php echo Form::text('menus.titulo') ?></label>
+
         <?php echo Form::text('menus.titulo') ?>
  
 
         <?php echo Form::submit('Agregar') ?>
 
         <?php echo Form::submit('Agregar') ?>
  
 
<?php echo Form::close() ?>
 
<?php echo Form::close() ?>
</div>
 
 
</source>
 
</source>
  
Línea 193: Línea 197:
 
'''''[apps]/views/menus/edit.phtml'''''
 
'''''[apps]/views/menus/edit.phtml'''''
 
<source lang=php>
 
<source lang=php>
<div class="content">
 
 
<?php View::content(); ?>
 
<?php View::content(); ?>
 
<h3>Editar menu<h3>
 
<h3>Editar menu<h3>
 +
// por defecto llama a la misma url
 +
<?php echo Form::open() ?>
  
<?php echo Form::open(); // por defecto llama a la misma url ?>
+
        <label for="menus.nombre">Nombre</label>
 +
        <?php echo Form::text('menus.nombre') ?>
  
         <label>Nombre
+
         <lable for="menus.titulo">Titulo</label>
        <?php echo Form::text('menus.nombre') ?></label>
+
         <td><?php echo Form::text('menus.titulo') ?>
 
+
         <label>Título
+
        <?php echo Form::text('menus.titulo') ?></label>
+
  
 
         <?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() ?>
</div>
 
 
</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
+
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/

Por favor observa que todas las contribuciones a KumbiaPHP Framework Wiki se consideran hechas públicas bajo la Attribution-Share Alike 3.0 Unported (véase KumbiaPHP Framework Wiki:Derechos de autor para más detalles). Si no deseas la modificación y distribución libre de tu obra, entonces no la pongas aquí.
También nos aseguras que tú escribiste esto y te pertenecen de los derechos de autor, o lo copiaste desde el dominio público u otra fuente libre. ¡No uses escritos con copyright sin permiso!

Cancelar | Ayuda de edición (se abre en una ventana nueva)

Plantilla usada en esta página: