0% found this document useful (0 votes)
45 views37 pages

Framework Cakephp

The document discusses the CakePHP framework. CakePHP is a PHP web development framework inspired by Ruby on Rails that uses the MVC pattern. It provides tools and libraries to help developers build web applications faster by handling common tasks like database abstraction, routing, caching, and security. The document then covers installing CakePHP, its directory structure, conventions, and using the bake command line tool to quickly generate code for basic CRUD operations on tables.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views37 pages

Framework Cakephp

The document discusses the CakePHP framework. CakePHP is a PHP web development framework inspired by Ruby on Rails that uses the MVC pattern. It provides tools and libraries to help developers build web applications faster by handling common tasks like database abstraction, routing, caching, and security. The document then covers installing CakePHP, its directory structure, conventions, and using the bake command line tool to quickly generate code for basic CRUD operations on tables.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 37

Cakephp Framework

Ing. Sergio Jiménez Martínez


[email protected]
Introducción a Cakephp

• CakePHP (v. 4.4)  es un framework de desarrollo web que funciona


con PHP 8.1 (min. PHP 7.4). Es una estructura de librerías, clases y
una infraestructura run-time (en tiempo de ejecución) para
programadores de aplicaciones web originalmente inspirado en el
framework Ruby On Rails, utiliza el patrón MVC
• CakePHP pone tu disposición todas las herramientas que necesita
para empezar a programar lo que realmente hay que hacer: la
lógica específica de tu aplicación. En lugar de reinventar la rueda
cada vez que te sientas a hacer un nuevo proyecto, obten una
copia de CakePHP y empieza con el verdadero corazón de tu
aplicación.
Características de Cakephp
• Licencia flexible
• Compatible con las versiones de PHP 7.4 y superiores.
• Contiene CRUD para la interacción de la base de datos.
• Andamiaje de código.
• Generación automática de código.
• Arquitectura MVC
• URLs personalizadas
• Función de Validación.
Características de Cakephp
• Plantillas rápidas y flexibles (La sintaxis de PHP, con ayudantes).
• Ayudantes para AJAX, JavaScript, formularios HTML y más.
• Componentes de Email, Cookie, Seguridad, Sesión y otros.
• ACL flexible.
• Sanitización de Datos.
• Poderoso Caché.
• Localización e Internacionalización.
• Funciona desde cualquier directorio de sitios web, con poca o ninguna
configuración adicional.
Ciclo de una petición CakePHP
Ciclo de una petición CakePHP
Instalación de Cakephp
Requerimientos
• Servidor HTTP. Por ejemplo: Apache. mod_rewrite es recomendado, pero no requerido.
• PHP 7.4 o mayor.
• extensión mbstring.
En el archivo php.ini Se debe des
• extensión intl. comentar
• extensión PDO quitar el ‘;’
•  extensión SimpleXML
CakePHP soporta una gran variedad 
de sistemas de bases de datos:
• MySQL (5.1.10 o mayor).
• PostgreSQL.
• Microsoft SQL Server (2008 o mayor).
• SQLite 3.
Instalación de Cakephp OP1 Linea comandos
Ejecuta estos comando:
1. prueba en tu consola esto :  php --version, Si no reconoce el comando entonces le das la ruta de tu
php así  set path=C:\xampp\php

2. En la consola ubicado en la ruta C:\xampp\htdocs, escribe este código 


php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') ===
'55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer
verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

©
Crear el primer proyecto
En la consola ubicado en la ruta C:\xampp\htdocs, Ejecuta este comando

php composer.phar create-project --prefer-dist cakephp/app crudcake


Donde crudcake es el nombre del proyecto nuevo que vas a crear
Después de muchas operaciones te pide que autorices permiso a la carpeta tmp,
le das y
Validar que instaló en cakephp

http://localhost/crudcake/
Estructura de directorios de Cakephp

Para una tabla Categorías


Algunas Convenciones de Cakephp
Modelo: La tabla se escribe “siempre en plural” y el “modelo en singular”
posts -> post.php

Controlador: “Siempre en plural”, y se agrega “Controller” al archivo y nombre


de la clase
class PostsController -> PostController.php
Las clases se escriben en formato CamelCased
Ejemplo CRUD -MER
Ejemplo CRUD Tablas en SQL
CREATE TABLE usuarios(
id INT AUTO_INCREMENT PRIMARY KEY,
nombres VARCHAR(25) NOT NULL, CREATE TABLE IF NOT EXISTS productos (
apellidos VARCHAR(25) NOT NULL, id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255) NOT NULL, codigobarras VARCHAR(20) NOT NULL ,
password VARCHAR(255) NOT NULL, descripcion VARCHAR(80) NOT NULL ,
created DATETIME, categorias_id INT NOT NULL ,
modified DATETIME precio DOUBLE NOT NULL ,
); cantidad INT NOT NULL ,
created DATETIME NULL ,
modified DATETIME NULL ,
CONSTRAINT fk_productos_categorias1 FOREIGN KEY (categorias_id )
CREATE TABLE IF NOT EXISTS categorias REFERENCES categorias (id)
(
);
id INT NOT NULL AUTO_INCREMENT
PRIMARY KEY,
descripcion VARCHAR(50) NOT NULL ,
estado SMALLINT NOT NULL DEFAULT 1 ,
created DATETIME NOT NULL ,
modified DATETIME NOT NULL
);
Configurando la BD en Cakephp

Para configurar la conexión a la base de datos, se debe editar


el archivo:
en /config/app_local.php
Creando la App en Cakephp

CAKE! CakePHP dispone de una herramienta


por línea de comandos, que permite
generar rápidamente las plantillas de
la aplicación para luego proceder a su
BAKE!
personalización

ACCION!
Creando la App en Cakephp

Se debe entrar por consola a la ruta del proyecto p.e

cd crudcake
cd bin
C:\xampp\htdocs\crudcake\bin>cake bake all Cliente
C:\xampp\htdocs\crudcake\bin>cake bake all Categorias
C:\xampp\htdocs\crudcake\bin>cake bake all Productos
Resultado…
C:\XAMPP\HTDOCS\CAKE36\SRC
│ Application.php C:\XAMPP\HTDOCS\CAKE36\SRC
│ ├───Template
├───Console
│ Installer.php │ ├───Categorias
│ │ │ add.ctp
├───Controller │ │ edit.ctp
│ │ AppController.php
│ │ CategoriasController.php │ │ index.ctp
│ │ ErrorController.php │ │ view.ctp
│ │ PagesController.php │ ├───Productos
│ │ ProductosController.php
│ │ UsuariosController.php │ │ add.ctp
├───Model │ │ edit.ctp
│ ├───Behavior │ │ index.ctp
│ │ empty
│ │ │ │ view.ctp
│ ├───Entity │ │
│ │ Categoria.php │ └───Usuarios
│ │ Producto.php
│ │ Usuario.php │ add.ctp
│ │ │ edit.ctp
│ └───Table │ index.ctp
│ CategoriasTable.php
│ ProductosTable.php │ view.ctp
│ UsuariosTable.php
Resultado… el método index
Resultado… el método add (insertar)
Resultado… el método edit (actualizar)
Resultado… el método View (ver)
UsuariosController Código Fuente
public function add()
<?php {

namespace App\Controller; $usuario = $this->Usuarios->newEntity();


if ($this->request->is('post')) {
use App\Controller\AppController;
$usuario = $this->Usuarios->patchEntity($usuario, $this->request->getData());
if ($this->Usuarios->save($usuario)) {
class UsuariosController extends AppController $this->Flash->success(__('The usuario has been saved.'));
{ return $this->redirect(['action' => 'index']);
public function index() }

{ $this->Flash->error(__('The usuario could not be saved. Please, try again.'));


}
$usuarios = $this->paginate($this->Usuarios);
$this->set(compact('usuario'));
$this->set(compact('usuarios'));
}//end add
} public function edit($id = null)
public function view($id = null) {
{ $usuario = $this->Usuarios->get($id, [ 'contain' => [] ]);

$usuario = $this->Usuarios->get($id, [ if ($this->request->is(['patch', 'post', 'put'])) {


$usuario = $this->Usuarios->patchEntity($usuario, $this->request->getData());
'contain' => []
if ($this->Usuarios->save($usuario)) {
]);
$this->Flash->success(__('The usuario has been saved.'));
return $this->redirect(['action' => 'index']);
$this->set('usuario', $usuario); }
} $this->Flash->error(__('The usuario could not be saved. Please, try again.'));
}
$this->set(compact('usuario'));
}//end edit
UsuariosController Código Fuente (Cont.)

public function delete($id = null)


{
$this->request->allowMethod(['post', 'delete']);
$usuario = $this->Usuarios->get($id);
if ($this->Usuarios->delete($usuario)) {
$this->Flash->success(__('The usuario has been deleted.'));
} else {
$this->Flash->error(__('The usuario could not be deleted. Please, try again.'));
}

return $this->redirect(['action' => 'index']);


}
Integración de cakephp con Bootstrap

Se puede hacer de dos formas

1. Referenciando los CSS y JS remotos así:


Integración de cakephp con Bootstrap

Dentro de la etiqueta <head> del archivo Template/Layout/default.php, pegar este código

<!-- para cargar el boostrap desde Internet →


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"> </script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-
awesome.min.css">

La vista principal es: Template/Pages/home.php,


Integración de cakephp con Bootstrap

En los botones de acciones del Template/productos/index.php personalizarlo por los tipos de botones
<?= $this->Html->link(__('View'), ['action' => 'view', $producto->id],['class'=>'btn btn btn-sm btn-
info']) ?>
<?= $this->Html->link(__('Edit'), ['action' => 'edit', $producto->id],['class'=>'btn btn btn-sm btn-
warning']) ?>
<?= $this->Form->postLink(__('Delete'), ['action' => 'delete', $producto->id],['class'=>'btn btn btn-sm
btn-danger'], ['confirm' => __('Are you sure you want to delete # {0}?', $producto->id)]) ?>
OTRA FORMA:Para que aparezca el Icono en vez de la palabra
<?= $this->Html->link('<i class="fa fa-pencil"></i>', ['controller' => 'Estudiantes', 'action' => 'edit', $estudiantes->id], ['escape' =>
false,'class'=>'edit-icon','title'=>'Editar estudiante']) ?>

<?= $this->Form->postLink('<i class="fa fa-times"></i>', ['controller' => 'Estudiantes','action' => 'delete', $estudiantes->id], ['confirm'
=> __('Estás seguro de que quieres eliminar el # {0}?', $estudiantes->id),'escape' => false,'class'=>'delete-icon','title'=>'Eliminar
estudiante']) ?>
Integración de cakephp con Bootstrap

Muestra algo como esto:

Así puedes personalizar el resto de las vistas


Cakephp V4.1 con

Se debe descargar la libreria del sitio oficial


https://github.com/tecnickcom/tcpdf
Copiarlo en la carpeta tcpdf en /vendor

En el archivo que genera el pdf debes poner


require_once ROOT. DS. 'vendor'. DS. 'tcpdf'. DS. 'tcpdf.php';
Cakephp V4.1 con
Dentro de la carpeta vendor/tcpdf/ crear un archivo llamado:
vendor/tcpdf/Pdf.php
Con esta estructura
CÓDIGO EJEMPLO
El reporte final queda asi
http://localhost/crudcake/reportes/listadocliente

Consulta cruzada

En Table/ClientesTable.php

En Table/VentasTable.php
http://localhost/crudcake/Facturas/

Consulta cruzada

Código de la vita templates/Facturas/index.php


Consulta cruzada

Código del Controlador controlador/FacturaController.php


http://localhost/crudcake/reportes/listadocliente

Consulta cruzada

ob_end_clean();
Manejo de Rutas En
config/routes.php

En el menu
REFERENCIAS

https://onlinewebtutorblog.com/cakephp-4-crud-using-ajax-requests-tutorial/

You might also like