Plugins de Recursos Disponibles

Aquí encontrará documentación del tipo API sobre todos los recursos de plugins disponibles por defecto en Zend_Application.

Zend_Application_Resource_Cachemanager

Zend_Application_Resource_Cachemanager puede ser utilizado para configurar un grupo de opciones de Zend_Cache para ser usado para cargar caches bajo demanda usando Zend_Cache_Manager

Como el Cache Manager usa un mecanismo de carga bajo demanda, las opciones son traducidas a plantillas de opciones usadas para instanciar un objeto de cache a pedido.

Ejemplo 31. Ejemplo de configuración del recurso Cachemanager

Aquí abajo se muestra un archivo INI de ejemplo que muestra como se puede configurar el Zend_Cache_Manager. El formato consta de un prefijo de recurso Cachemanager ( resources.cachemanager) seguido por el nombre de la plantilla de cache (por ejemplo resources.cachemanager.database) y finalmente seguido de una opción típica de Zend_Cache.

resources.cachemanager.database.frontend.name = Core
resources.cachemanager.database.frontend.customFrontendNaming = false
resources.cachemanager.database.frontend.options.lifetime = 7200
resources.cachemanager.database.frontend.options.automatic_serialization = true
resources.cachemanager.database.backend.name = File
resources.cachemanager.database.backend.customBackendNaming = false
resources.cachemanager.database.backend.options.cache_dir = "/path/to/cache"
resources.cachemanager.database.frontendBackendAutoload = false

En realidad, buscar éste cache desde el Cache Manager es tan simple como acceder a una instancia del Manager (Zend_Cache_Manager) tomada desde Zend_Application_Resource_Cachemanager y llamar $cacheManager->getCache('database');. El siguiente ejemplo fue tomado de un controlador donde la clase bootstrap puede ser accedida como un parametro de Front Controller (que es automáticamente asignado durante el proceso de bootstrap). Como se puede ver, el recurso Cache Manager implementa el método getCacheManager() para obtener una instancia de Zend_Cache_Manager.

$manager = $this->getFrontController()
            ->getParam('bootstrap')
            ->getResource('cachemanager')
            ->getCacheManager();
$dbCache = $manager->getCache('database');

Ver el método Zend_Cache::factory() para una descripción de los valores por defecto que se pueden asignar al momento de configurar un cache como el del ejemplo usando un archivo de configuración INI.


Zend_Application_Resource_Db

Zend_Application_Resource_Db inicializará un adaptador Zend_Db basado en las opciones que se le pasen. Por defecto, también establece el adaptador por defecto para usarlo con Zend_Db_Table . Zend_Db_Table. If you want to use mutliple databases simultaneously, you can use the Multidb Resource Plugin.

Se reconocen las siguientes configuraciones claves:

  • adapter : tipo de adaptador Zend_Db .

  • params : array asociativo de parámetros de configuración para utilizar al recuperar la instancia del adaptador.

  • isDefaultTableAdapter : Indica si establecer o no este adaptador como el adaptador de tablas por defecto.

  • defaultMetadataCache: the name of the cache template or an instance of Zend_Cache_Core to use as metadata cache for Zend_Db_Table.

Ejemplo 32. Muestra de la Configuracion de Recursos del Adaptador DB (Base de Datos)

A continuación, un ejemplo de configuración INI que puede ser utilizada para iniciar el recurso DB.

[production]
resources.db.adapter = "pdo_mysql"
resources.db.params.host = "localhost"
resources.db.params.username = "webuser"
resources.db.params.password = "XXXXXXX"
resources.db.params.dbname = "test"
resources.db.isDefaultTableAdapter = true

; Optionally you can also the cache template to use for metadata caching:
resources.db.defaultMetadataCache = "database"

Recuperando la Instancia del Adaptador

Si decide no hacer la instanciación del adaptador con este recurso por defecto del adaptador de tabla, ¿cómo puede recuperar la instancia del adaptador?

Como con cualquier recurso de plugin, se puede recuperar el recurso de plugin de DB desde su archivo de arranque:

$resource = $bootstrap->getPluginResource('db');

Una vez que tiene el recurso objeto, puede recuperar el adaptador de DB usando el método getDbAdapter() :

$db = $resource->getDbAdapter();

Zend_Application_Resource_Dojo

Zend_Application_Resource_Dojo puede ser usado para configurar los Zend_Dojo viewhelpers.

Ejemplo 33. Configuración de ejemplo del recurso Dojo

Aquí se muestra un archivo INI de ejemplo que indica como habilitar Zend_Dojo.

resources.dojo.enable = true ; Siempre cargar archivos javascript de Dojo

El recurso complemento Zend_Dojo utiliza las opciones de Zend_Dojo_View_Helper_Dojo_Container::setOptions() para configurar sus viewhelpers. Por favor diríjase al capítulo acerca de Zend_Dojo para una lista completa de opciones disponibles para la configuración y sus descripciones.


Zend_Application_Resource_Frontcontroller

Probablemente el recurso más común que se carga con Zend_Application será el recurso Front Controller , que proporciona la habilidad para configurar Zend_Controller_Front . Este recurso ofrece la posibilidad de establecer parámetros arbitrarios del Front Controller, especificar plugins para inicializar, y mucho más.

Una vez inicializado, el recurso asigna la propiedad del $frontController del bootstrap a la instancia Zend_Controller_Front .

Las claves de configuración disponibles incluyen las siguientes, sin importar si son mayúsculas ó minúsculas:

  • controllerDirectory :: ya sea un valor de string especificando un único directorio controlador, o un array de pares de directorio módulo/controlador.

  • moduleControllerDirectoryName : un valor de string indicando el subdirectorio bajo el cual un módulo contiene controladores.

  • moduleDirectory : directorio bajo el cual pueden encontrarse los módulos.

  • defaultControllerName : Nombre base del controlador por defecto (normalmente, "índex").

  • defaultAction : nombre base de la acción por defecto (normalmente, "índex").

  • defaultModule : nombre base del módulo por defecto (normalmente, "default").

  • baseUrl : base explícita a la URL de la aplicación (normalmente auto-detect).

  • plugins : array con los nombres de los plugins de las clases de los Front Controllers. El recurso instanciará a cada clase (sin argumentos al constructor) y luego registra la instancia con el Front Controller. If you want to register a plugin with a particular stack index, you need to provide an array with two keys class and stackIndex.

  • params : array de pares clave/valor para registrarse con el front controller.

  • returnresponse: whether or not to return the response object after dispatching the front controller. Value should be a boolean; by default, this is disabled.

Si se ingresa una clave no reconocida, ésta será registrada como un parámetro de Front Controller pasándolo a setParam() .

Ejemplo 34. Ejemplo Front Controller resource configuration

A continuación, INI es un snippet para mostrar cómo configurar el recurso Front Controller.

[production]
resources.frontController.controllerDirectory = APPLICATION_PATH . "/controllers"
resources.frontController.moduleControllerDirectoryName = "actions"
resources.frontController.moduleController = APPLICATION_PATH .  "/modules"
resources.frontController.defaultControllerName = "site"
resources.frontController.defaultAction = "home"
resources.frontController.defaultModule = "static"
resources.frontController.baseUrl = "/subdir"
resources.frontController.plugins.foo = "My_Plugin_Foo"
resources.frontController.plugins.bar = "My_Plugin_Bar"
resources.frontController.plugins.baz.class = "My_Plugin_Baz"
resources.frontController.plugins.baz.stackIndex = 123
resources.frontController.returnresponse = 1
resources.frontController.env = APPLICATION_ENV

; The following proxies to:
; Zend_Controller_Action_HelperBroker::addPath('Helper_Path', $helperPrefix);
resources.frontController.actionHelperPaths.HELPER_Prefix = "My/Helper/Path"

Ejemplo 35. Recuperar el Front Controller de su arranque (bootstrap)

Una vez que el recurso de su Front Controller ha sido inicializado, se puede recuperar la instancia de Front Controller a través de la propiedad $frontController de su bootstrap.

$bootstrap->bootstrap('frontController');
$front = $bootstrap->frontController;

Zend_Application_Resource_Layout

Zend_Application_Resource_Layout can be used to configure Zend_Layout. Configuration options are per the Zend_Layout options.

Ejemplo 36. Sample Layout configuration

Below is a sample INI snippet showing how to configure the navigation resource.

resources.layout.layout = "NameOfDefaultLayout"
resources.layout.layoutPath = "/path/to/layouts"

Zend_Application_Resource_Locale

Zend_Application_Resource_Locale puede ser usado para configurar una localidad en el ámbito de una aplicación entera. Ésta localidad es usada en todas las clases y componentes que trabajen con localización o internacionalización. Por defecfto la localidad es guardada en una entrada en Zend_Registry baje la clave ' Zend_Locale'.

Hay básicamente tres casos de uso para el Locale Resource Plugin. Cada uno deberá ser usado dependiendo de la necesidad de la apliación.

Autodetectando la localidad a usar

Sin especificar ninguna opción para Zend_Application_Resource_Locale, Zend_Locale detectará la localidad y la aplicación la usará automaticamente.

Ésta detección funciona porque el cliente envía el idioma deseado en su pedido HTTP. Normalmente el navegador envía los idiomas que desea ver y Zend_Locale usa esta información para la detección.

Pero hay dos problemas con este enfoque:

  • El navegador podría estar configurado para no enviar el idioma

  • El usuario podría haber configurado manualmente una localidad que no exista

En ambos casos Zend_Locale se apoyará en otros mecanismos para realizar la detección de la localidad:

  • Cuando se configuró una localidad que no existe, Zend_Locale trata de degradar la cadena.

    Cuando, por ejemplo se configura en_ZZ, automáticamente será degradado a en. En este caso en será usado como la localidad de la aplicación.

  • Cuando la localidad tampoco haya podido ser detectada incluso degradando la cadena, la localidad de su entorno (servidor web) será usada. La mayoría de los entornos disponibles en la web usan en como localidad.

  • Cuando la localidad del sistema no se haya podido detectar, Zend_Locale usara su localidad por defecto, que está configurada como en.

Para más información acerda de la detección de localidad, vea este capitulo acerca de detección automática de Zend_Locale

Autodetectando la localidad y agregando su mecanismo propio de reserva

La detección descrita más arriba podría llegar a provocar problemas cuando la localidad no haya podido ser detectada y se desea tener otra localidad como defecto que no sea en. Para prevenir esto, Zend_Application_Resource_Locale permite configurar su propia localidad, que será usada en el cado de que una localidad no se haya podido detectar.

Ejemplo 37. Autodetectar la loclidad configurando un mecanismo de reserva

El siguiente ejemplo muestra como configurar su propia localidad que será usada cuando el cliente no especifique ninguna localidad.

; Try to determine automatically first,
; if unsuccessful, use nl_NL as fallback.
resources.locale.default = "nl_NL"

            

Forzando una localidad en particular

Muchas veces es útil definir una única localidad para ser usada. Esto se puede conseguir usando la opción force.

En este caso, ésta única localidad será usada y detección automática será desactivada.

Ejemplo 38. Definiendo una única localidad a ser usada

El siguiente ejemplo muestra como usar una única localidad para la aplicación entera.

; No matter what, the nl_NL locale will be used.
resources.locale.default = "nl_NL"
resources.locale.force = true

            

Configure cache template

When you have set no cache, Zend_Locale will set itself a cache with the file backend by default. But if you want to choose the backend or others options, you can use the name of a cache template or an instance of Zend_Cache_Core. For more informations look into “Speed up Zend_Locale and its subclasses”.

Ejemplo 39. Defining a cache template to use

; Optionally you can also the cache template to use for caching:
resources.locale.cache = "locale"

            

Zend_Application_Resource_Log

Use Zend_Application_Resource_Log para instanciar un Zend_Log con una cantidad de escritores arbitraria. La configuración será pasada al método Zend_Log::factory() para permitir especificar una combinacion de filtros y escritores de logs. La instancia de log podra ser tomada del bootstrap luego para guardar eventos de log.

Ejemplo 40. Ejemplo de configuración del recurso de Log

Abajo se muestra un extracto de archivo INI de ejemplo donde se muestra como configurar el recurso de log.

resources.log.stream.writerName = "Stream"
resources.log.stream.writerParams.stream = APPLICATION_PATH"/../data/logs/application.log"
resources.log.stream.writerParams.mode = "a"
resources.log.stream.filterName = "Priority"
resources.log.stream.filterParams.priority = 4

Para más información de las opciones disponibles, por favor lea la documentacion de Zend_Log::factory().


Zend_Application_Resource_Mail

Zend_Application_Resource_Mail puede ser usado para instanciar un transporte para Zend_Mail o configurar el nombre y dirección por defecto, asimismo como el nombre y dirección para el encabezado "replyto".

Al instanciar un transporte, éste es registrado automáticamente con Zend_Mail aunque si se quisiera evitar este comportamiento se puede configurar la directiva transport.register con el valor FALSE.

Ejemplo 41. Ejemplo de configuración del recurso Mail

Abajo se muestra un extracto de archivo INI de ejemplo donde se muestra como configurar el recurso de Mail.

resources.mail.transport.type = smtp
resources.mail.transport.host = "smtp.example.com"
resources.mail.transport.auth = login
resources.mail.transport.username = myUsuario
resources.mail.transport.password = myClave
resources.mail.transport.register = true ; True por defecto

resources.mail.defaultFrom.email = john@example.com
resources.mail.defaultFrom.name = "John Doe"
resources.mail.defaultReplyTo.email = Jane@example.com
resources.mail.defaultReplyTo.name = "Jane Doe"

Zend_Application_Resource_Modules

Zend_Application_Resource_Modules se utiliza para inicializar sus módulos de aplicación. Si su módulo tiene un archivo Bootstrap.php en su raíz, y contiene una clase llamada Module_Bootstrap (donde "Module" es el nombre del módulo), entonces usará esa clase para arrancar el módulo.

Por defecto, se creará una instancia de Zend_Application_Module_Autoloader para el módulo, utilizando el nombre del módulo y del directorio para inicializarlo.

Ya que los módulos no reciben ningún parámetro por defecto, para poder activarlos via configuración, será necesario crearlo como un array vacío. Seguiendo el estilo de configuración INI será similar a:

        resources.modules[] =
        

Siguiendo el estilo de configuración XML será similar a:

        <resources>
            <modules>
                <!-- Placeholder to ensure an array is created -->
                <placeholder />
            </modules>
        </resources>

Utilizando un array PHP estandar, simplemente creelo como un array vacío:

$options = array(
    'resources' => array(
        'modules' => array(),
    ),
);

Dependencia de Recursos del Front Controller

El recurso Modules tiene una dependencia de Front Controller resource . Usted puede, por supuesto, proporcionar su propia sustitución de ese recurso mediante un recurso personalizado de la clase Front Controller o un método inicializador de la clase -- tan largo como se quiera siempre que el plugin del recurso de la clase termine en "Frontcontroller" o el método inicializador se llame "_initFrontController" (case insensible).

Ejemplo 42. Configurando Módulos

Usted puede especificar una configuración específica de un módulo utilizando el nombre del módulo como un prefijo/sub-sección en su archivo de configuración.

Por ejemplo, supongamos que su aplicación tiene un módulo "noticias". Los siguientes son ejemplos de INI y XML que muestran la configuración de recursos en ese módulo.

[production]
news.resources.db.adapter = "pdo_mysql"
news.resources.db.params.host = "localhost"
news.resources.db.params.username = "webuser"
news.resources.db.params.password = "XXXXXXX"
news.resources.db.params.dbname = "news"
news.resources.layout.layout = "news"
<?xml version="1.0"?>
<config>
    <production>
        <news>
            <resources>
                <db>
                    <adapter>pdo_mysql</adapter>
                    <params>
                        <host>localhost</host>
                        <username>webuser</username>
                        <password>XXXXXXX</password>
                        <dbname>news</dbname>
                    </params>
                    <isDefaultAdapter>true</isDefaultAdapter>
                </db>
            </resources>
        </news>
    </production>
</config>

Ejemplo 43. Recuperando el bootstrap de un módulo específico

En ocasiones, puede que necesite para recuperar el objeto bootstrap de un módulo específico -- tal vez para ejecutar discretos métodos bootstrap ,o a recoger el cargador automático con el fin de configurarlo. Esto puede hacerse utilizando el método getExecutedBootstraps() de los recursos de Módulo.

$resource = $bootstrap->getPluginResource('modules');
$moduleBootstraps = $resource->getExecutedBootstraps();
$newsBootstrap = $moduleBootstraps['news'];

Zend_Application_Resource_Multidb

Zend_Application_Resource_Multidb puede ser utulizado para instanciar múltiples conexiones a distintas bases de datos. Se pueden usar las mismas opciones que con el recurso complemento Db. Sin embargo, para especificar una conexión por defecto, se puede usar la directiva 'default'.

Ejemplo 44. Configurando múltiples conexiones

Abajo se muestra un extracto de archivo INI de ejemplo donde se muestra como configurar dos conexiones.

[production]
resources.multidb.db1.adapter = "pdo_mysql"
resources.multidb.db1.host = "localhost"
resources.multidb.db1.username = "webuser"
resources.multidb.db1.password = "miClaveDificil"
resources.multidb.db1.dbname = "db1"

resources.multidb.db2.adapter = "pdo_pgsql"
resources.multidb.db2.host = "example.com"
resources.multidb.db2.username = "dba"
resources.multidb.db2.password = "otraClaveDificil"
resources.multidb.db2.dbname = "db2"
resources.multidb.db2.default = true

Ejemplo 45. Obteniendo un adaptador de base de datos en particular

Al usar este recurso complemento, por lo general se desea obtener el adaptador de una base de datos en particular. Esto puede ser realizado usando el método getDb() provisto por el recurso. El método getDb() devuelve una instancia de una clase que extiende Zend_Db_Adapter_Abstract. Si no ha especificado una base de datos por defecto, saltará una excepción si este método es llamado sin pasarle un parámetro

$resource = $bootstrap->getPluginResource('multidb');
$db1 = $resource->getDb('db1');
$db2 = $resource->getDb('db2');
$defaultDb = $resource->getDb();

Ejemplo 46. Obteniendo el adaptador de base de datos por defecto

Adicionalmente, se puede obtener el adaptador por defecto usando el método getDefaultDb(). Si no ha especificado un adaptador por defecto, el primer adaptador configurado será devuelto. A menos que especifique FALSE como primer parámetro, NULL será devuelto cuando no se haya configurado ningún adaptador por defecto.

Abajo se muestra un ejemplo que asume que el recurso complemento MultiDb se ha configurado con el ejemplo INI mostrado anteriormente.

$resource = $bootstrap->getPluginResource('multidb');
$db2 = $resource->getDefaultDb();

// Misma configuración, pero ahora con la db por defecto:
$db1 = $resource->getDefaultDb();
$null = $resource->getDefaultDb(false); // null

Zend_Application_Resource_Navigation

Zend_Application_Resource_Navigation puede ser usado para configurar una instancia de Zend_Navigation. Las opciones de configuración son las mismas que para Zend_Navigation.

Al terminar de configurar la instancia de navegación, la asigna a Zend_View_Helper_Navigation por defecto, de donde se puede obtener posteriormente.

Ejemplo 47. Ejemplo de configuración del recurso Navigation

Abajo se muestra un extracto de archivo INI de ejemplo donde se muestra como configurar una navegación.

resources.navigation.pages.page1.label = "Etiqueta para la primera página"
resources.navigation.pages.page1.route = "Route perteneciente a la primera página"

; La página 2 es una subpágina de la página 1
resources.navigation.pages.page1.pages.page2.type = "Zend_Navigation_Page_Uri"
resources.navigation.pages.page1.pages.page2.label = "Etiqueta para la segunda página"
resources.navigation.pages.page1.pages.page2.uri = "/url/to/page/2"

Zend_Application_Resource_Router

Zend_Application_Resource_Router puede ser usado para configurar el router mientras es registrado con el Front Controller. La configuración es la misma que para Zend_Controller_Router_Route.

Ejemplo 48. Configuración de ejemplo del recurso Router

Abajo se muestra un extracto de archivo INI de ejemplo donde se muestra como configurar el recurso de Router.

resources.router.routes.route_id.route = "/login"
resources.router.routes.route_id.defaults.module = "user"
resources.router.routes.route_id.defaults.controller = "login"
resources.router.routes.route_id.defaults.action = "index"

; Opcionalmente se puede configurar un separador de nombre encadenado:
resources.router.chainNameSeparator = "_"

Para más información, vea la sección del separador de nombre encadenado.


Zend_Application_Resource_Session

Zend_Application_Resource_Session le permite configurar Zend_Session y opcionalmente inicializar una sesión SaveHandler.

Para establecer un manejador de sesiones, simplemente pasar al recurso la clave opcional saveHandler (case insensible). El valor de esta opción puede ser uno de los siguientes:

  • String : un string indicando una clase implementando Zend_Session_SaveHandler_Interface que debería ser instanciada.

  • Array : un array con las claves "class" y, opcionalmente, "options", indicando la clase que implementa Zend_Session_SaveHandler_Interface que debería ser instanciada y una variedad de opciones para proporcionar a su constructor.

  • Zend_Session_SaveHandler_Interface : un objeto implementando esta interfaz.

Pasando cualquier otra opción de claves será pasado a Zend_Session::setOptions() para configurar Zend_Session .

Ejemplo 49. Configuración de recursos de la Sesión Ejemplo

A continuación el snippet INI nos muestra cómo configurar el recurso para sesiones. Se establecen varias opciones Zend_Session , como también configura una instancia Zend_Session_SaveHandler_DbTable .

resources.session.save_path = APPLICATION_PATH "/../data/session"
resources.session.use_only_cookies = true
resources.session.remember_me_seconds = 864000
resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable"
resources.session.saveHandler.options.name = "session"
resources.session.saveHandler.options.primary.session_id = "session_id"
resources.session.saveHandler.options.primary.save_path = "save_path"
resources.session.saveHandler.options.primary.name = "name"
resources.session.saveHandler.options.primaryAssignment.sessionId = "sessionId"
resources.session.saveHandler.options.primaryAssignment.sessionSavePath = "sessionSavePath"
resources.session.saveHandler.options.primaryAssignment.sessionName = "sessionName"
resources.session.saveHandler.options.modifiedColumn = "modified"
resources.session.saveHandler.options.dataColumn = "session_data"
resources.session.saveHandler.options.lifetimeColumn = "lifetime"

Configurando tu primera base de datos!

Si vas a configurar el manejador Zend_Session_SaveHandler_DbTable para guardar sesiones , primero deberas configurar tu conexión a la base de datos. Lo puedes hacer mediante Db -- y asegurate de que la llave " resources.db " esta antes que el " resources.session " -- o escribiedo tu propia clase para inicializar la base de datos y establecer los valores predeterminados para el adaptador Zend_Db_Table .

Zend_Application_Resource_Translate

Zend_Application_Resource_Translate inicializara un adaptador Zend_Translate basado en las opciones con las que se lo configure.

Las siguientes claves de configuración son válidas:

  • adapter : El tipo de adaptador Zend_Translate. El adaptador por defecto es array si es que no se especifica ninguno.

  • data : ruta a la traducción.

  • locale : la localidad a ser usada para la traducción. Por defecto la localidad es detectada automáticamente. Para forzar una localidad arbitraria hay que guardar una instancia de Zend_Locale en el Zend_Registry.

  • options : las opciones son distintas para cada adaptador. Ver la sección “Options for adapters” para mas detalles.

  • registry : la clave customizada para guardar la instancia de Zend_Translate en el registry. Por defecto, la clave se llamará Zend_Translate.

  • cache : el nombre de la plantilla de cache o una instancia de Zend_Cache_Core para que Zend_Translate_Adapter use como cache. Su gol es acelerar la carga, sobre todo en el caso de los archivos XML.

Ejemplo 50. Ejemplo de configuración del recurso de traducción

Abajo se muestra un extracto de archivo INI de ejemplo donde se muestra como configurar el recurso de traducción.

resources.translate.adapter = tmx
resources.translate.content = APPLICATION_PATH "/../data/locales"
resources.translate.scan = Zend_Translate::LOCALE_DIRECTORY

; Opcionalmente se puede especificar una plantilla de cache:
resources.translate.cache = "languages"

Zend_Application_Resource_View

Zend_Application_Resource_View puede ser utilizada para configurar una instancia Zend_View . Las opciones de configuración son por las opciones de Zend_View .

Una vez hecha la configuración de la instancia de vista, crea una instancia de Zend_Controller_Action_Helper_ViewRenderer y registra el ViewRenderer con Zend_Controller_Action_HelperBroker -- desde la cual usted puede recuperarla posteriormente.

Ejemplo 51. Ejemplo de configuración del recurso Vista

A continuación un snippet INI mostrando cómo configurar el recurso vista (view).

resources.view.encoding = "UTF-8"
resources.view.basePath = APPLICATION_PATH "/views/scripts"