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:
{{cleanupbox
 
|image=[[Archivo:Information_icon4.png|45px]]
 
|texto ='''Este Artículo cumple con todos los requererimientos de los Kumbieros.'''<br />
 
}}
 
{{cleanupbox
 
|texto ='''Este ejemplo es funcional para la [[KumbiaPHP_Framework_Versión_1.0_Spirit | Versión Beta1]]'''<br />
 
}}
 
== Texto de titular ==
 
 
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 definició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]])
+
'''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 Obejtos]])
  
 
<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 Objetos]]
+
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" line>
+
<source lang="php">
 
<?php
 
<?php
/**
 
* Carga del modelo Menus...
 
*/
 
Load::models('menus');
 
 
 
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)  
 
     {
 
     {
        $menu = new Menus();
+
         $this->listMenus = $this->Menus->getMenus($page);
         $this->listMenus = $menu->getMenus($page);
 
 
     }
 
     }
 
      
 
      
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
 
                 */
 
                 */
            }else{
 
                Flash::success('Operación exitosa');
 
 
             }
 
             }
 
         }
 
         }
Línea 107: Línea 93:
 
     public function edit($id = null)
 
     public function edit($id = null)
 
     {
 
     {
     $menu = new Menus();
+
     if($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 = $menu->find((int)$id);
+
             $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(!$menu->update($this->post('menus'))){
+
             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)
 
     {
 
     {
        $menu = new Menus();
 
 
         if ($id) {
 
         if ($id) {
             if (!$menu->delete((int)$id)) {
+
             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="php" line>
+
<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("menus/create",'Agregar'); ?>
 
 
         <?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')) ?><br/>
+
         <?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 Html::link("menus/index/$listMenus->prev/", '<< Anterior |'); ?>
+
     <?php if($listMenus->prev) echo link_to(array("menus/index/$listMenus->prev/", '<< Anterior |')); ?>
     <?php if($listMenus->next) echo Html::link("menus/index/$listMenus->next/", '| Próximo >>'); ?>
+
     <?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="php" line>
+
<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="php" line>
+
<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]]
 
== Descarga ==
 
Descarga: [http://dl.dropbox.com/u/2807704/kumbiaPHP/v1_b1/app_crud.zip app_crud] para el '''core''' de Spirit v1.0 '''beta1'''.
 
 
Este ejemplo de descarga esta apuntado a la base de datos '''test''', usuario '''root''' y clave '''123'''.
 

Ten en cuenta que todas las contribuciones a KumbiaPHP Framework Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Proyecto:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

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

Plantilla usada en esta página: