Via Zend Framework in Action encontré una colección de las opciones de configuración que application.ini puede tener. considero esta información importante para no dejarla pasar.
Application Ini Zend Framework
APRENDIENDO PHP5, en este Blog encontrarás información relacionada con PHP5, OPP, Patrones de diseño,UML,ZendFramework,Bases de Datos, CSS, JQuery y herramientas de trabajo.
lunes, 30 de abril de 2012
lunes, 16 de abril de 2012
Vistas (views)
El script de vista constituyen el código HTML que muestra la información al usuario o cliente de nuestra aplicación separando la lógica del negocio, estos archivos son también llamados templates o plantillas que facilitan la visualización de la información como resultado de la interacción del controlador y el modelo. Cuando este resultado es generado (render), se asigna automáticamente el script de vista .phtml correspondiente según el nombre del “Action”, a no ser que en forma manual (render(‘archivo.phtml’)) se indique otro script vista.
El script de vista por defecto tienen extensión .phtml indicando básicamente que este archivo contiene código XHTML junto con algún javascript, CSS o PHP que permita interactuar al usuario con la aplicación, (Embeber código PHP)este sufijo se puede cambiar por criterios propios mediante un Action Helper dentro de un controller
$this->_helper->viewRenderer->setViewSuffix('html');
La ubicación de las vistas por defecto es views/scripts
Por defecto cada ACTION del CONTROLLER hará un render o buscará un VIEW SCRIPT con el mismo nombre del ACTION para mostrar la información. Este proceso automático lo hace el action helper ViewRenderer (activo por defecto). Éste puede ser desactivado para que el action no haga render o visualice información alguna.
public function verAction()
{
// Desactiva el render de la acción
$this->_helper->viewRenderer->setNoRender();
}
En ZF los templates o plantillas .phtml son parte del ámbito del objeto Zed_View motivo por el cual las propiedades y metodos son accesibles usando $this , en el caso de asignar valores a las propiedades dentro de un controller lo hariamos asi:
$this->view->nombre = “Carlos”; y en la vista la podemos llamar $this->escape($this->nombre);
En el caso de pasar varios valores podemos utilizar el metodo assign() de la siguiente forma
$cantantes = array("joe","celia","frank","Nino");
$this->view->assign('cantantes',$cantantes);
Y en la vista
<table border="1">
<tr>
<th>No.</th>
<th>Nombre</th>
</tr>
<?php foreach ($this->cantantes as $key => $val): ?>
<tr>
<td><?php echo $this->escape($key) ?></td>
<td><?php echo $this->escape($val) ?></td>
</tr>
<?php endforeach; ?>
</table>
En las vistas se recomienda la utilización del metodo escape() que nos permite asegurar la salida de código HTML evitando que el sitio o aplicación sufra ataques Cross-Site Scripting (XSS), este método funciona de la siguiente manera En el controller tenemos
$this->view->nombre ='Carlos Fernando Benítez & >>< "" ';
Y En la vista
echo $this->escape($this->nombre);
El resultad en el navegador es:
Carlos Fernando Benítez & >>< ""
Si miramos el código fuente de la pagina podemos apreciar que la función escape() por defecto usa la función htmlspecialchars() cambiando a entidades html los códigos de los caracteres enviados
Inicializar el OBJETO VIEW
Si las asignaciones de variables para ser utilizadas o visualizadas en las vistas se realizan dentro del controller, sólo es necesario utilizar $this->view->nombreVariable = “valor”, debido a que el objeto View ha sido instanciado desde la clase Zend/Controller/Action en el método initView(). Cuando se necesita desde el comienzo de la aplicación, como es el caso de los view helpers debemos crear un método _init en el Bootstrap.php para poder recuperar la instancia de Zend_View.
protected function _initViewSet()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->doctype('XHTML1_STRICT');
}
$this->bootstrap->(‘view’) es un método final perteneciente a la clase Zend/Application/Bootstrap/BootstrapAbstract.php
final public function bootstrap($resource = null)
{
$this->_bootstrap($resource);
return $this;
}
Que creará un contenedor de recursos que pueden ser recuperados mediante
$view = $this->getResource('view');
El recurso debe hacer sido declarado antes, en el caso de “view”, dentro del archivo application.ini debe contener resources.view[] =
Si nuestro application.ini no cuenta con las líneas de inicialización de los recursos deberíamos entonces crear la nueva instancia de la clase
protected function _initView()
{
$view = new Zend_View();
$view->doctype('XHTML1_STRICT');
$view->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=UTF-8');
$view->headTitle('Software de Control')
->setSeparator(' :: ');
$view->departamento = "Simón Bolivar";
}
Tener especial cuidado con los nombre de los métodos utilizados en el Bootstrap y los nombre de los plugins de recursos utilizados en application.ini. esto puede provocar conflictos y presentan el siguiente mensaje de error
Fatal error: Uncaught exception 'Zend_Application_Bootstrap_Exception' with message 'Circular resource dependency detected' in C:\Zend\library\Zend\Application\Bootstrap\BootstrapAbstract.php:660 Stack trace: #0
Por ejemplo si en el application.ini tenemos el plugin de recurso VIEW
resources.view[] =
y en el Bootstrap.php tenemos el método
protected function _initView()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->doctype('XHTML1_STRICT');
$view->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=UTF-8');
$view->headTitle('Software de Control ')
->setSeparator(' :: ');
$view->institucion = " Simón Bolivar";
}
Zend_Application interpreta que se crearán dos objetos donde solo es necesario uno, esto provocará el mensaje de "Circular resource dependency detected"
Suscribirse a:
Entradas (Atom)