Al actualizar desde una versión anterior a Zend Framework 1.0 o superior debe tener en cuenta las siguientes notas de migración.
Los principales cambios introducidos en 1.0.0RC1 son la introducción y la habilitación por defecto del plugin ErrorHandler y el ayudante de acción ViewRenderer. Por favor lea detenidamente la documentación de cada uno para ver cómo funcionan y qué efecto pueden tener en sus aplicaciones.
El plugin ErrorHandler se ejecuta durante
postDispatch() comprobando si hay excepciones, y reenviando
a un controlador de manejo de errores especificado. Debería incluir dicho
controlador en su aplicación. Puede deshabilitarlo estableciendo el
parámetro del controlador frontal noErrorHandler:
$front->setParam('noErrorHandler', true);
El ayudante de acción ViewRenderer automatiza la inyección de vistas
en los controladores de acción, así como el autorenderizado de scripts de vista
en función de la acción actual. El principal problema que puede encontrar es
si tiene acciones que no renderizan scripts de vista y tampoco
reenvían ni redirigen, ya que el ViewRenderer intentará
renderizar un script de vista basado en el nombre de la acción.
Existen varias estrategias que puede seguir para actualizar su código. A
corto plazo, puede deshabilitar globalmente el
ViewRenderer en el bootstrap de su controlador frontal antes
de despachar:
// Assuming $front is an instance of Zend_Controller_Front
$front->setParam('noViewRenderer', true);
Sin embargo, esta no es una buena estrategia a largo plazo, ya que significa que muy probablemente terminará escribiendo más código.
Cuando esté listo para empezar a usar la funcionalidad del
ViewRenderer, hay varias cosas que debe observar en su
código de controlador. Primero, mire sus métodos de acción (los métodos
que terminan en 'Action'), y determine qué hace cada uno. Si no ocurre nada de
lo siguiente, necesitará hacer cambios:
Llamadas a $this->render();
Llamadas a $this->_forward();
Llamadas a $this->_redirect();
Llamadas al ayudante de acción
Redirector
El cambio más sencillo es deshabilitar el autorenderizado para ese método:
$this->_helper->viewRenderer->setNoRender();
Si descubre que ninguno de sus métodos de acción está renderizando,
reenviando o redirigiendo, probablemente querrá colocar la línea anterior
en sus métodos preDispatch() o init():
public function preDispatch()
{
// disable view script autorendering
$this->_helper->viewRenderer->setNoRender()
// .. do other things...
}
Si está llamando a render(), y está utilizando la estructura de directorios
modular convencional, querrá cambiar su código para
aprovechar el autorenderizado:
Si está renderizando múltiples scripts de vista en una sola acción, no necesita cambiar nada.
Si simplemente está llamando a
render()sin argumentos, puede eliminar esas líneas.Si está llamando a
render()con argumentos, y no realiza ningún procesamiento después ni renderiza múltiples scripts de vista, puede cambiar estas llamadas para que sean $this->_helper->viewRenderer();.
Si no está utilizando la estructura de directorios modular convencional,
hay una variedad de métodos para establecer la ruta base de la vista y
las especificaciones de ruta de scripts, de modo que pueda aprovechar el
ViewRenderer. Por favor lea la documentación del
ViewRenderer para obtener información sobre estos métodos.
Si está utilizando un objeto de vista del registro, o personalizando su
objeto de vista, o usando una implementación de vista diferente, querrá
inyectar el ViewRenderer con ese objeto. Esto se puede
hacer fácilmente en cualquier momento.
-
Antes de despachar una instancia del controlador frontal:
// Assuming $view has already been defined $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view); Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
-
En cualquier momento durante el proceso de bootstrap:
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); $viewRenderer->setView($view);
Hay muchas formas de modificar el ViewRenderer,
incluyendo establecer un script de vista diferente para renderizar, especificar
reemplazos para todos los elementos reemplazables de una ruta de script de vista
(incluyendo el sufijo), elegir un segmento con nombre de respuesta a
utilizar, y más. Si no está utilizando la estructura de directorios
modular convencional, incluso puede asociar diferentes especificaciones
de ruta con el ViewRenderer.
Le animamos a adaptar su código para usar el
ErrorHandler y el ViewRenderer, ya que ahora son
funcionalidad principal.
Crear un objeto de Zend_Currency se ha vuelto más simple.
Ya no tiene que dar un script o establecerlo a NULL. El parámetro
de script opcional ahora es una opción que se puede establecer mediante el
método setFormat().
$currency = new Zend_Currency($currency, $locale);
El método setFormat() ahora toma un array de opciones. Estas
opciones se establecen de forma permanente y sobrescriben todos los valores establecidos previamente. También se ha añadido
una nueva opción 'precision'. Las siguientes opciones han sido refactorizadas:
position: Reemplazo del antiguo parámetro 'rules'.
script: Reemplazo del antiguo parámetro 'script'.
format: Reemplazo del antiguo parámetro 'locale' que ya no establece nuevas divisas sino solo el formato numérico.
display: Reemplazo del antiguo parámetro 'rules'.
precision: Nuevo parámetro.
name: Reemplazo del antiguo parámetro 'rules'. Establece el nombre completo de la divisa.
currency: Nuevo parámetro.
symbol: Nuevo parámetro.
$currency->setFormat(array $options);
El método toCurrency() ya no soporta los parámetros opcionales
'script' y 'locale'. En su lugar, toma un array de opciones que
puede contener las mismas claves que el método setFormat().
$currency->toCurrency($value, array $options);
Los métodos getSymbol(),
getShortName(), getName(),
getRegionList() y
getCurrencyList() ya no son estáticos y se pueden llamar
desde dentro del objeto. Devuelven los valores establecidos del objeto si no
se ha establecido ningún parámetro.