Zend Framework/Módulos
Introducción
editarEn este ejemplo la parte importante es #/html/index.php aquí tenemos que prestar especial atención al fragmento
// Inicializar el MVC Zend_Layout::startMvc(array('layoutPath' => ROOT_DIR.'/application/layouts'));
Aquí indicamos que utilice el layout que esta en application/layouts.
// Ejecutar! $frontController = Zend_Controller_Front::getInstance(); $frontController->setControllerDirectory(array( 'default' => ROOT_DIR.'/application/default/controllers', 'usuarios' => ROOT_DIR.'/application/usuarios/controllers' ));
Mapeamos los modulos default y usuario a los path /application/default/controllers y /application/usuarios/controllers respectivamente. Con esto customizamos el MVC por modulo.
En #/application/default/controllers/IndexController.php se encuentra el controlador por defecto para el modulo por defecto. Este controlador no adiciona nada en especial con respecto a los ejemplos previos.
Pero en #/application/usuarios/controllers/IndexController.php podemos ver que es un tanto diferente.
class Usuarios_IndexController extends Zend_Controller_Action
en su declaración de clase notamos que por convención, tiene como prefijo el nombre del modulo. Esto permite el ruteo.
Podemos encontrar el ejemplo en http://zend-framework-hispano.googlegroups.com/web/zft_modules_basica.zip
Estructura de archivos
editarLa estructura de los archivos será al siguiente
Archivo:Zft modules basica.png
/.htaccess
editar// esta es la forma anterior Este archivo me permite realizar una redireccion utilizando apache, aqui me indica que cada vez que ingrese a la url http://localhost/zft ( que es donde reside este ejemplo ) nos redireccionara hacia http://localhost/zft/html que es la url base de la aplicacion.
RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css)$ html
//esta es la nueva forma
RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ html [NC,L]
editado por efrasoft webcol.net
/application/layouts/layout.phtml
editarPlantilla:Zf /application/layouts/layout.phtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>ZFTutorial :: Enfoque pragmatico</title> <link rel="stylesheet" type="text/css" href="<?php echo $this->baseUrl();?>/css/grid.css" /> </head> <body> <div id="bcss-header"> <!-- bcss-header --> <?php echo $this->layout()->header ?> <!-- /bcss-header --> </div> <div id="bcss-sidebar-1"> <!-- bcss-sidebar-1 --> <?php echo $this->layout()->sidebarLeft ?> <!-- /bcss-sidebar-1 --> </div> <div id="bcss-content"> <!-- bcss-content --> <?php echo $this->layout()->content ?> <!-- /bcss-content --> </div> <div id="bcss-sidebar-2"> <!-- bcss-sidebar-2 --> <?php echo $this->layout()->sidebarRight ?> <!-- /bcss-sidebar-2 --> </div> <div id="bcss-footer"> <!-- bcss-footer --> <?php echo $this->layout()->footer ?> <!-- /bcss-footer --> </div> </body> </html>
/application/usuarios/controllers/IndexController.php
editarPlantilla:Zf /application/usuarios/controllers/IndexController.php
<?php /** * Zend Framework Tutorial * * Este tutorial tiene un enfoque pragmatico, lo cual indica una amplia cantidad * de ejemplos. Este material forma parte del Wikibook en español para ZF. * * @author Mario Garcia * @copyright Copyright (c) 2006-2008 Oh!Studio Media Solutions (http://www.ohstudio.com.ar) * @license http://www.php.net/license/3_0.txt */ class Usuarios_IndexController extends Zend_Controller_Action { function init() { $response = $this->getResponse(); $response->insert('sidebarLeft', $this->view->render('sidebarLeft.phtml')); $response->insert('sidebarRight', $this->view->render('sidebarRight.phtml')); $response->insert('header', $this->view->render('header.phtml')); $response->insert('footer', $this->view->render('footer.phtml')); } public function indexAction() { } }
/application/usuarios/views/helpers/BaseUrl.php
editarPlantilla:Zf /application/usuarios/views/helpers/BaseUrl.php
<?php /** * Zend Framework Tutorial * * Este tutorial tiene un enfoque pragmatico, lo cual indica una amplia cantidad * de ejemplos. Este material forma parte del Wikibook en español para ZF. * * @author Mario Garcia * @copyright Copyright (c) 2006-2008 Oh!Studio Media Solutions (http://www.ohstudio.com.ar) * @license http://www.php.net/license/3_0.txt */ class Zend_View_Helper_BaseUrl { function baseUrl() { $fc = Zend_Controller_Front::getInstance(); $request = $fc->getRequest(); return $request->getBaseUrl(); } }
/application/usuarios/views/scripts/sidebarLeft.phtml
editarPlantilla:Zf /application/usuarios/views/scripts/sidebarLeft.phtml
usuarios:: <ul> <li><a href="<?php echo $this->baseUrl();?>/">default</a></li> <li><a href="http://www.google.com">google</a></li> </ul>
/application/usuarios/views/scripts/header.phtml
editarPlantilla:Zf /application/usuarios/views/scripts/header.phtml
<h1>usuarios::Header</h1>
/application/usuarios/views/scripts/footer.phtml
editarPlantilla:Zf /application/usuarios/views/scripts/footer.phtml
<h1>usuarios::Footer</h1>
/application/usuarios/views/scripts/sidebarRight.phtml
editarPlantilla:Zf /application/usuarios/views/scripts/sidebarRight.phtml
<h1>usuarios::Sidebar Right</h1>
/application/usuarios/views/scripts/index/index.phtml
editarPlantilla:Zf /application/usuarios/views/scripts/index/index.phtml
<h1>usuarios::Hello World !!!</h1>
/application/default/controllers/IndexController.php
editarPlantilla:Zf /application/default/controllers/IndexController.php
<?php /** * Zend Framework Tutorial * * Este tutorial tiene un enfoque pragmatico, lo cual indica una amplia cantidad * de ejemplos. Este material forma parte del Wikibook en español para ZF. * * @author Mario Garcia * @copyright Copyright (c) 2006-2008 Oh!Studio Media Solutions (http://www.ohstudio.com.ar) * @license http://www.php.net/license/3_0.txt */ class IndexController extends Zend_Controller_Action { function init() { $response = $this->getResponse(); $response->insert('sidebarLeft', $this->view->render('sidebarLeft.phtml')); $response->insert('sidebarRight', $this->view->render('sidebarRight.phtml')); $response->insert('header', $this->view->render('header.phtml')); $response->insert('footer', $this->view->render('footer.phtml')); } public function indexAction() { } }
/application/default/views/helpers/BaseUrl.php
editarPlantilla:Zf /application/default/views/helpers/BaseUrl.php
<?php /** * Zend Framework Tutorial * * Este tutorial tiene un enfoque pragmatico, lo cual indica una amplia cantidad * de ejemplos. Este material forma parte del Wikibook en español para ZF. * * @author Mario Garcia * @copyright Copyright (c) 2006-2008 Oh!Studio Media Solutions (http://www.ohstudio.com.ar) * @license http://www.php.net/license/3_0.txt */ class Zend_View_Helper_BaseUrl { function baseUrl() { $fc = Zend_Controller_Front::getInstance(); $request = $fc->getRequest(); return $request->getBaseUrl(); } }
/application/default/views/scripts/sidebarLeft.phtml
editarPlantilla:Zf /application/default/views/scripts/sidebarLeft.phtml
default:: <ul> <li><a href="<?php echo $this->baseUrl();?>/usuarios/">modulos usuarios</a></li> <li><a href="http://www.google.com">google</a></li> </ul>
/application/default/views/scripts/header.phtml
editarPlantilla:Zf /application/default/views/scripts/header.phtml
<h1>default::Header</h1>
/application/default/views/scripts/footer.phtml
editarPlantilla:Zf /application/default/views/scripts/footer.phtml
<h1>default::Footer</h1>
/application/default/views/scripts/sidebarRight.phtml
editarPlantilla:Zf /application/default/views/scripts/sidebarRight.phtml
<h1>default::Sidebar Right</h1>
/application/default/views/scripts/index/index.phtml
editarPlantilla:Zf /application/default/views/scripts/index/index.phtml
<h1>default::Hello World !!!</h1>
/html/index.php
editar<?php /** * Zend Framework Tutorial * * Este tutorial tiene un enfoque pragmatico, lo cual indica una amplia cantidad * de ejemplos. Este material forma parte del Wikibook en español para ZF. * * @author Mario Garcia * @copyright Copyright (c) 2006-2008 Oh!Studio Media Solutions (http://www.ohstudio.com.ar) * @license http://www.php.net/license/3_0.txt */ /*poner comentario*/ define('ROOT_DIR', dirname(dirname(__FILE__))); // Inicializamos los path de inclusion set_include_path('.' . PATH_SEPARATOR . ROOT_DIR.'/lib/' . PATH_SEPARATOR . ROOT_DIR.'/application/models' . PATH_SEPARATOR . get_include_path() ); //documento las dos lineas siguientes pues ya estan desaprobadas //require_once 'Zend/Loader.php'; //Zend_Loader::registerAutoload(); //ahora usa estas /*efrasoft*/ require_once 'Zend/Loader/Autoloader.php'; $loader = Zend_Loader_Autoloader::getInstance(); $loader->setFallbackAutoloader(true); $loader->suppressNotFoundWarnings(false); // Inicializar el MVC Zend_Layout::startMvc(array('layoutPath' => ROOT_DIR.'/application/layouts')); // Ejecutar! $frontController = Zend_Controller_Front::getInstance(); $frontController->setControllerDirectory(array( 'default' => ROOT_DIR.'/application/default/controllers', 'usuarios' => ROOT_DIR.'/application/usuarios/controllers' )); $frontController->throwExceptions(true); try { $frontController->dispatch(); } catch(Exception $e) { echo nl2br($e->__toString()); }
/html/.htaccess
editarEste archivo me permite determinar que todo archivo que no sea una imagen, ni js, ni css sea redireccionado hacia index.php.
RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
aa
/html/css/grid.css
editarEste archivo forma parte del layout #/application/views/layouts/layout.phtml.
Aquí le aplicamos el estilo para la distribución de las secciones.
/* Site Grid by BoxedCSS.com */ #bcss-header { width:100%; background:#FFFFE5; /* you can delete this, it's just a visual aid */ clear:both; } #bcss-sidebar-1 { width:27%; float:left; background:#FFE5FF; /* you can delete this, it's just a visual aid */ } #bcss-sidebar-2 { width:13%; float:left; background:#F7FBEA; /* you can delete this, it's just a visual aid */ } #bcss-content { width:60%; min-height: 400px; float:left; background:#E5F2FF; /* you can delete this, it's just a visual aid */ } #bcss-footer { width:100%; clear:both; background:#FFF2E5; /* you can delete this, it's just a visual aid */ }