Introducción

editar

En 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

editar

La 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

editar

Plantilla: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

editar

Plantilla: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

editar

Plantilla: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

editar

Plantilla: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

editar

Plantilla:Zf /application/usuarios/views/scripts/header.phtml

<h1>usuarios::Header</h1>


/application/usuarios/views/scripts/footer.phtml

editar

Plantilla:Zf /application/usuarios/views/scripts/footer.phtml

<h1>usuarios::Footer</h1>


/application/usuarios/views/scripts/sidebarRight.phtml

editar

Plantilla:Zf /application/usuarios/views/scripts/sidebarRight.phtml

<h1>usuarios::Sidebar Right</h1>


/application/usuarios/views/scripts/index/index.phtml

editar

Plantilla:Zf /application/usuarios/views/scripts/index/index.phtml

<h1>usuarios::Hello World !!!</h1>


/application/default/controllers/IndexController.php

editar

Plantilla: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

editar

Plantilla: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

editar

Plantilla: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

editar

Plantilla:Zf /application/default/views/scripts/header.phtml

<h1>default::Header</h1>


/application/default/views/scripts/footer.phtml

editar

Plantilla:Zf /application/default/views/scripts/footer.phtml

<h1>default::Footer</h1>


/application/default/views/scripts/sidebarRight.phtml

editar

Plantilla:Zf /application/default/views/scripts/sidebarRight.phtml

<h1>default::Sidebar Right</h1>


/application/default/views/scripts/index/index.phtml

editar

Plantilla:Zf /application/default/views/scripts/index/index.phtml

<h1>default::Hello World !!!</h1>


/html/index.php

editar

Plantilla:Zf /html/index.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
 */

/*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

editar

Este 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

editar

Este 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 */

	}