SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
MMMMaaaannnnuuuuaaaallll BBBBáááássssiiiiccccoooo
CCCCoooonnnnffffiiiigggguuuurrrraaaacccciiiióóóónnnn iiiinnnniiiicccciiiiaaaallll 
> En Apache, ajustar httpd.conf para permitir el 
redireccionamiento a cualquier framework 
LoadModule rewrite_module modules/mod_rewrite.so 
... 
<Directory “/var/www/”> 
Options Indexes FollowSymLinks 
AllowOverride All 
Require all granted 
</Directory>
path-proyecto/app/Config/database.php 
public $default = array( 
’datasource’ => ’Database/Mysql’, 
’persistent’ => false, 
’host’ => ’localhost’, 
’port’ => ’’, 
’login’ => ’cakeBlog’, 
’password’ => ’c4k3-rUl3Z’, 
’database’ => ’cake_blog_tutorial’, 
’schema’ => ’’, 
’prefix’ => ’’, 
’encoding’ => ’utf8’ 
); 
CCCCoooonnnnffffiiiigggguuuurrrraaaacccciiiióóóónnnn BBBBBBBBDDDDDDDD
OOOOrrrrggggaaaannnniiiizzzzaaaacccciiiióóóónnnn ddddeeee llllaaaa aaaapppplllliiiiccccaaaacccciiiióóóónnnn 
> CakePHP organiza fácilmente la aplicación 
/path-root-aplicacion 
app/ 
Controller/ 
<Nombre-Controlador>.php 
Model/ 
<Nombre-Modelo>.php 
View/ 
<nombre-Controlador>/ 
<nombre-Acción>.ctp
RRRRoooouuuuttttiiiinnnngggg 
> CakePHP gestiona automáticamente routing 
http://uri-aplicacion/posts/index 
URL de la aplicación Controlador Acción 
/path-root-aplicación 
/path-root-aplicación/app/Controller/PostsController.php 
/path-root-aplicación/app/View/Posts/index.ctp
MMMMooooddddeeeelllloooo 
/* Archivo /app/Model/Post.php 
class Post extends AppModel { 
} 
> CakePHP gestiona el modelo automáticamente 
> Primera letra en mayúscula (es una clase) 
> El modelo interactúa con la base de datos 
> Métodos implícitos de acceso a BBDD
CCCCoooonnnnttttrrrroooollllaaaaddddoooorrrr 
/* Archivo /app/Controller/PostsController.php 
class PostsController extends AppController { 
public $helpers = array(“Html”, “Form”); 
public function index() { 
$this->set('posts', $this->Post->find('all'))); 
} 
} 
> El nombre ha de llevar el sufijo “Controller” 
> El controlador contiene la lógica de negocio 
> Utiliza el modelo para procesar la info 
> Envía el resultado a la vista para pintarlo
AAAAcccccccciiiióóóónnnn 
/* Archivo /app/Controller/PostsController.php 
class PostsController extends AppController { 
public $helpers = array(“Html”, “Form”); 
public function index() { 
Ejecuta el 
método find() del 
modelo 
SELECT * FROM posts 
Acción “index” 
$this->set('posts', $this->Post->find('all'))); 
} 
El resultado 
de la consulta 
se guarda en la 
variable 'posts' 
y lo envía a la vista 
} 
> Cada método del controlador es una acción 
> Cada acción está ligada a una vista 
> Con this, cakePHP nos pone en contacto con 
la vista y el modelo
VVVViiiissssttttaaaa 
<!-- Archivo /app/View/Posts/index.ctp --> 
<h1>Blog posts</h1> 
<table><tr> 
<th>Id</th> 
<th>Title</th> 
<th>Created</th> 
</tr> 
Variable enviada 
por el controlador 
en la acción Variable que 
recoge cada registro 
<?php foreach ($posts as $post): ?> 
<tr> 
<td><?php echo $post[’Post’][’id’]; ?></td> 
<td> 
<?php echo $this->Html->link($post[’Post’][’title’], 
array(’controller’ => ’posts’, ’action’ => ’view’, $post[’Post’][’id’])); ?> 
</td> 
<td><?php echo $post[’Post’][’created’]; ?></td> 
</tr> 
<?php endforeach; ?> 
<?php unset($post); ?> 
</table> 
Campos Prepara la URI 
para la acción 
'view'
CCCCaaaassssoooo CCCCoooonnnnssssuuuullllttttaaaa----SSSSuuuubbbbccccoooonnnnssssuuuullllttttaaaa 
Tabla Delegaciones 
- id 
- nom_delegacion 
Tabla Sucursales 
- id 
- nom_sucursal 
- delegacion_id 
- direccion 
- cod_postal 
- ciudad 
- provincia 
- telefono
MMMMooooddddeeeelllloooossss 
<!-- Archivo /app/Models/Delegacione.php --> 
<?php 
App::uses('AppModel', 'Model'); 
class Delegacione extends AppModel { 
public $name = 'Delegacione'; 
public $hasMany = array('Sucursale'=> 
array('className'=>'Sucursale', 
'foreignKey'=>'delegacion_id', 
'order'=>'Sucursale.nom_sucursal ASC')); 
public function listar() { 
return $this->find('all'); 
} 
public function buscarDelegacion($delegacion) { 
return $this->findAllByNomDelegacion($delegacion); 
} 
public function buscar($id) { 
return $this->findAllById($id); 
} 
} 
<!-- Archivo /app/Models/Sucursale.php --> 
<?php 
App::uses('AppModel', 'Model'); 
class Sucursale extends AppModel { 
public $name = "Sucursale"; 
public $belongsTo = array('Delegacione'=> 
array('className'=>'Delegacione', 
'foreignKey'=>'delegacion_id')); 
} 
De forma automática, 
CakePHP se asocia a la tabla 
por convención de nombre: 
la tabla en plural y el modelo 
en singular 
De forma implícita, el modelo 
incluye e implementa métodos 
de lectura y escritura a la base 
de datos. 
Una vez definidas las 
relaciones entres los modelos, 
éstas quedan vinculadas 
para todas las consultas
CCCCoooonnnnttttrrrroooollllaaaaddddoooorrrr 
<?php 
/* Fichero app/Controller/DelegacionesController.php 
App::uses('AppController', 'Controller'); 
class DelegacionesController extends AppController { 
public $helpers = array('Html', 'Form'); 
public function getDelegaciones() { 
//$delegaciones = $this->Delegacione->listar(); 
//$delegaciones = $this->Delegacione->buscarDelegacion('Murcia'); 
$delegaciones = $this->Delegacione->buscar(2); 
//$delegaciones = $this->Delegacione->query("SELECT * FROM Delegaciones WHERE 
nom_delegacion='Valencia';"); 
//$delegaciones = $this->Delegacione->findAllByNomDelegacion('Murcia'); 
$this->set('delegaciones', $delegaciones); 
} 
} 
Diferentes formas de invocar 
al modelo para obtener 
resultados
VVVViiiissssttttaaaa 
<!-- Archivo app/View/Delegaciones/get_delegaciones.ctp 
<h1>Delegaciones</h1> 
<?php print_r($delegaciones); ?> 
<table> 
<tr> 
<th>Id</th> 
<th>Delegación</th> 
<th>Sucursales</th> 
</tr> 
<?php foreach ($delegaciones as $delegacion): ?> 
<tr> 
<td><?php echo $delegacion['Delegacione']['id']; ?></td> 
<td><?php echo $delegacion['Delegacione']['nom_delegacion']; ?></td> 
<td> 
<?php foreach($delegacion['Sucursale'] as $sucursal): ?> 
<?php echo $sucursal['nom_sucursal'].'('.$sucursal['id'].')'; ?> 
<?php unset($sucursal); ?> 
<?php endforeach; ?> 
</td> 
</tr> 
<?php endforeach; ?> 
<?php unset($delegacion); ?> 
</table> 
Al vincularse la consulta y subconsulta, 
la tabla principal contiene un campo 
de tipo array, conteniendo la colección 
de datos de la subconsulta, filtrando 
por la foreign key 
Muestra el resultado en crudo.
RRRReeeessssuuuullllttttaaaaddddoooo ffffiiiinnnnaaaallll

Más contenido relacionado

La actualidad más candente

Ejemplo aplicacion web (estructura)
Ejemplo aplicacion web (estructura)Ejemplo aplicacion web (estructura)
Ejemplo aplicacion web (estructura)BrayanDZ92
 
php ejemplos
php ejemplosphp ejemplos
php ejemplosZOMBRA
 
Php04 estructuras control
Php04 estructuras controlPhp04 estructuras control
Php04 estructuras controlJulio Pari
 
Curso AngularJS - 3. módulos y controladores
Curso AngularJS - 3. módulos y controladoresCurso AngularJS - 3. módulos y controladores
Curso AngularJS - 3. módulos y controladoresÁlvaro Alonso González
 
Instalacion de Pentaho 5 con PostgreSQL 9.3
Instalacion de Pentaho 5 con PostgreSQL 9.3Instalacion de Pentaho 5 con PostgreSQL 9.3
Instalacion de Pentaho 5 con PostgreSQL 9.3Ciencias
 
Conexion Entre Php Y Mysqul
Conexion Entre Php Y MysqulConexion Entre Php Y Mysqul
Conexion Entre Php Y Mysquljuan_j_condolo
 

La actualidad más candente (12)

Ejemplo aplicacion web (estructura)
Ejemplo aplicacion web (estructura)Ejemplo aplicacion web (estructura)
Ejemplo aplicacion web (estructura)
 
Conexion
ConexionConexion
Conexion
 
php ejemplos
php ejemplosphp ejemplos
php ejemplos
 
Solucion laboratorio uml
Solucion laboratorio umlSolucion laboratorio uml
Solucion laboratorio uml
 
Php
PhpPhp
Php
 
Java beans en jsp
Java beans en jspJava beans en jsp
Java beans en jsp
 
Codificación-HolaMundo
Codificación-HolaMundoCodificación-HolaMundo
Codificación-HolaMundo
 
Php04 estructuras control
Php04 estructuras controlPhp04 estructuras control
Php04 estructuras control
 
Curso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzadosCurso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzados
 
Curso AngularJS - 3. módulos y controladores
Curso AngularJS - 3. módulos y controladoresCurso AngularJS - 3. módulos y controladores
Curso AngularJS - 3. módulos y controladores
 
Instalacion de Pentaho 5 con PostgreSQL 9.3
Instalacion de Pentaho 5 con PostgreSQL 9.3Instalacion de Pentaho 5 con PostgreSQL 9.3
Instalacion de Pentaho 5 con PostgreSQL 9.3
 
Conexion Entre Php Y Mysqul
Conexion Entre Php Y MysqulConexion Entre Php Y Mysqul
Conexion Entre Php Y Mysqul
 

Similar a Conceptos basicos en CakePHP

Introducción a AngularJS
Introducción a AngularJS Introducción a AngularJS
Introducción a AngularJS Marcos Reynoso
 
Guia N5 Proyectos Web Consultas Php Y My Sql
Guia N5   Proyectos Web   Consultas Php Y My SqlGuia N5   Proyectos Web   Consultas Php Y My Sql
Guia N5 Proyectos Web Consultas Php Y My SqlJose Ponce
 
MyBatis como alternativa a Hibernate
MyBatis como alternativa a HibernateMyBatis como alternativa a Hibernate
MyBatis como alternativa a HibernateRubén Aguilera
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Juan Manuel
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controladordescarga2009
 
Php excel
Php excelPhp excel
Php excelpcuseth
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletjubacalo
 
Joomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesJoomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesdeivit86
 
Ejemplos de php_mysql
Ejemplos de php_mysqlEjemplos de php_mysql
Ejemplos de php_mysqlI LG
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryJavier P.
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencapaulcuenca9
 

Similar a Conceptos basicos en CakePHP (20)

APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
Introducción a AngularJS
Introducción a AngularJS Introducción a AngularJS
Introducción a AngularJS
 
Guia N5 Proyectos Web Consultas Php Y My Sql
Guia N5   Proyectos Web   Consultas Php Y My SqlGuia N5   Proyectos Web   Consultas Php Y My Sql
Guia N5 Proyectos Web Consultas Php Y My Sql
 
Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3
 
MyBatis como alternativa a Hibernate
MyBatis como alternativa a HibernateMyBatis como alternativa a Hibernate
MyBatis como alternativa a Hibernate
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controlador
 
Php excel
Php excelPhp excel
Php excel
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servlet
 
Joomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesJoomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensiones
 
PHP Y MYSQL
PHP Y MYSQLPHP Y MYSQL
PHP Y MYSQL
 
Ejemplos de php_mysql
Ejemplos de php_mysqlEjemplos de php_mysql
Ejemplos de php_mysql
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQuery
 
Introducción a Flask
Introducción a FlaskIntroducción a Flask
Introducción a Flask
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuenca
 
EXAMEN
EXAMENEXAMEN
EXAMEN
 
Presentacion YII
Presentacion YIIPresentacion YII
Presentacion YII
 

Último

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 

Último (19)

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 

Conceptos basicos en CakePHP

  • 2. CCCCoooonnnnffffiiiigggguuuurrrraaaacccciiiióóóónnnn iiiinnnniiiicccciiiiaaaallll > En Apache, ajustar httpd.conf para permitir el redireccionamiento a cualquier framework LoadModule rewrite_module modules/mod_rewrite.so ... <Directory “/var/www/”> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
  • 3. path-proyecto/app/Config/database.php public $default = array( ’datasource’ => ’Database/Mysql’, ’persistent’ => false, ’host’ => ’localhost’, ’port’ => ’’, ’login’ => ’cakeBlog’, ’password’ => ’c4k3-rUl3Z’, ’database’ => ’cake_blog_tutorial’, ’schema’ => ’’, ’prefix’ => ’’, ’encoding’ => ’utf8’ ); CCCCoooonnnnffffiiiigggguuuurrrraaaacccciiiióóóónnnn BBBBBBBBDDDDDDDD
  • 4. OOOOrrrrggggaaaannnniiiizzzzaaaacccciiiióóóónnnn ddddeeee llllaaaa aaaapppplllliiiiccccaaaacccciiiióóóónnnn > CakePHP organiza fácilmente la aplicación /path-root-aplicacion app/ Controller/ <Nombre-Controlador>.php Model/ <Nombre-Modelo>.php View/ <nombre-Controlador>/ <nombre-Acción>.ctp
  • 5. RRRRoooouuuuttttiiiinnnngggg > CakePHP gestiona automáticamente routing http://uri-aplicacion/posts/index URL de la aplicación Controlador Acción /path-root-aplicación /path-root-aplicación/app/Controller/PostsController.php /path-root-aplicación/app/View/Posts/index.ctp
  • 6. MMMMooooddddeeeelllloooo /* Archivo /app/Model/Post.php class Post extends AppModel { } > CakePHP gestiona el modelo automáticamente > Primera letra en mayúscula (es una clase) > El modelo interactúa con la base de datos > Métodos implícitos de acceso a BBDD
  • 7. CCCCoooonnnnttttrrrroooollllaaaaddddoooorrrr /* Archivo /app/Controller/PostsController.php class PostsController extends AppController { public $helpers = array(“Html”, “Form”); public function index() { $this->set('posts', $this->Post->find('all'))); } } > El nombre ha de llevar el sufijo “Controller” > El controlador contiene la lógica de negocio > Utiliza el modelo para procesar la info > Envía el resultado a la vista para pintarlo
  • 8. AAAAcccccccciiiióóóónnnn /* Archivo /app/Controller/PostsController.php class PostsController extends AppController { public $helpers = array(“Html”, “Form”); public function index() { Ejecuta el método find() del modelo SELECT * FROM posts Acción “index” $this->set('posts', $this->Post->find('all'))); } El resultado de la consulta se guarda en la variable 'posts' y lo envía a la vista } > Cada método del controlador es una acción > Cada acción está ligada a una vista > Con this, cakePHP nos pone en contacto con la vista y el modelo
  • 9. VVVViiiissssttttaaaa <!-- Archivo /app/View/Posts/index.ctp --> <h1>Blog posts</h1> <table><tr> <th>Id</th> <th>Title</th> <th>Created</th> </tr> Variable enviada por el controlador en la acción Variable que recoge cada registro <?php foreach ($posts as $post): ?> <tr> <td><?php echo $post[’Post’][’id’]; ?></td> <td> <?php echo $this->Html->link($post[’Post’][’title’], array(’controller’ => ’posts’, ’action’ => ’view’, $post[’Post’][’id’])); ?> </td> <td><?php echo $post[’Post’][’created’]; ?></td> </tr> <?php endforeach; ?> <?php unset($post); ?> </table> Campos Prepara la URI para la acción 'view'
  • 10. CCCCaaaassssoooo CCCCoooonnnnssssuuuullllttttaaaa----SSSSuuuubbbbccccoooonnnnssssuuuullllttttaaaa Tabla Delegaciones - id - nom_delegacion Tabla Sucursales - id - nom_sucursal - delegacion_id - direccion - cod_postal - ciudad - provincia - telefono
  • 11. MMMMooooddddeeeelllloooossss <!-- Archivo /app/Models/Delegacione.php --> <?php App::uses('AppModel', 'Model'); class Delegacione extends AppModel { public $name = 'Delegacione'; public $hasMany = array('Sucursale'=> array('className'=>'Sucursale', 'foreignKey'=>'delegacion_id', 'order'=>'Sucursale.nom_sucursal ASC')); public function listar() { return $this->find('all'); } public function buscarDelegacion($delegacion) { return $this->findAllByNomDelegacion($delegacion); } public function buscar($id) { return $this->findAllById($id); } } <!-- Archivo /app/Models/Sucursale.php --> <?php App::uses('AppModel', 'Model'); class Sucursale extends AppModel { public $name = "Sucursale"; public $belongsTo = array('Delegacione'=> array('className'=>'Delegacione', 'foreignKey'=>'delegacion_id')); } De forma automática, CakePHP se asocia a la tabla por convención de nombre: la tabla en plural y el modelo en singular De forma implícita, el modelo incluye e implementa métodos de lectura y escritura a la base de datos. Una vez definidas las relaciones entres los modelos, éstas quedan vinculadas para todas las consultas
  • 12. CCCCoooonnnnttttrrrroooollllaaaaddddoooorrrr <?php /* Fichero app/Controller/DelegacionesController.php App::uses('AppController', 'Controller'); class DelegacionesController extends AppController { public $helpers = array('Html', 'Form'); public function getDelegaciones() { //$delegaciones = $this->Delegacione->listar(); //$delegaciones = $this->Delegacione->buscarDelegacion('Murcia'); $delegaciones = $this->Delegacione->buscar(2); //$delegaciones = $this->Delegacione->query("SELECT * FROM Delegaciones WHERE nom_delegacion='Valencia';"); //$delegaciones = $this->Delegacione->findAllByNomDelegacion('Murcia'); $this->set('delegaciones', $delegaciones); } } Diferentes formas de invocar al modelo para obtener resultados
  • 13. VVVViiiissssttttaaaa <!-- Archivo app/View/Delegaciones/get_delegaciones.ctp <h1>Delegaciones</h1> <?php print_r($delegaciones); ?> <table> <tr> <th>Id</th> <th>Delegación</th> <th>Sucursales</th> </tr> <?php foreach ($delegaciones as $delegacion): ?> <tr> <td><?php echo $delegacion['Delegacione']['id']; ?></td> <td><?php echo $delegacion['Delegacione']['nom_delegacion']; ?></td> <td> <?php foreach($delegacion['Sucursale'] as $sucursal): ?> <?php echo $sucursal['nom_sucursal'].'('.$sucursal['id'].')'; ?> <?php unset($sucursal); ?> <?php endforeach; ?> </td> </tr> <?php endforeach; ?> <?php unset($delegacion); ?> </table> Al vincularse la consulta y subconsulta, la tabla principal contiene un campo de tipo array, conteniendo la colección de datos de la subconsulta, filtrando por la foreign key Muestra el resultado en crudo.