Introducción a Zend Framework

 Aprendiendo Zend Framework

Apéndice

 Referencia de Zend Framework


  • Zend_Gdata
  • Zend_Http
  • Zend_InfoCard
  • Zend_Json
  • Zend_Layout
  • Zend_Ldap
  • Zend_Loader
  • Zend_Locale
  • Zend_Log
  • Zend_Mail
  • Zend_Markup
  • Zend_Measure
  • Zend_Memory
  • Zend_Mime
  • Zend_Navigation
  • Zend_Oauth
  • Zend_OpenId
  • Zend_Paginator
  • Zend_Pdf
  • Zend_ProgressBar
  • Zend_Queue
  • Zend_Reflection
  • Zend_Registry
  • Zend_Rest

  • Zend_Search_Lucene
  • Zend_Serializer
  • Zend_Server
  • Zend_Service
  • Zend_Session
  • Zend_Soap
  • Zend_Tag
  • Zend_Test
  • Zend_Text
  • Zend_TimeSync
  • Zend_Tool
  • Zend_Tool_Framework
  • Zend_Tool_Project
  • Zend_Translate
  • Zend_Uri
  • Zend_Validate
  • Zend_Version
  • Zend_View
  • Zend_Wildfire
  • Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Traducción al 26.9% - Actualizado el 2011-11-16 - Revisión 24249 - Versión ZF 1.11.x

    Capítulo 24. Zend_Controller

    Tabla de contenidos

    24.1. Inicio rápido a Zend_Controller
    24.1.1. Introducción
    24.1.2. Quick Start
    24.1.2.1. Cree su estructura de archivos
    24.1.2.2. Establezca el document root
    24.1.2.3. Cree sus reglas de reescritura
    24.1.2.4. Crear el archivo bootstrap
    24.1.2.5. Crear el action controller por defecto
    24.1.2.6. Cree su view script
    24.1.2.7. Cree su controlador de errores
    24.1.2.8. ¡Vea el sitio!
    24.2. Conceptos Básicos de Zend_Controller
    24.3. El Front Controller
    24.3.1. Introducción
    24.3.2. Métodos Básicos
    24.3.2.1. getInstance()
    24.3.2.2. setControllerDirectory() y addControllerDirectory
    24.3.2.3. addModuleDirectory() y getModuleDirectory()
    24.3.2.4. dispatch()
    24.3.2.5. run()
    24.3.3. Métodos Accessor Ambientales
    24.3.4. Parámetros de Front Controller
    24.3.5. Extendiendo el Front Controller
    24.4. La solicitud del Objeto
    24.4.1. Introducción
    24.4.2. Solicitud HTTP
    24.4.2.1. Solicitud de acceso a datos
    24.4.2.2. Base Url and Subdirectories
    24.4.2.3. Determining the Request Method
    24.4.2.4. Detecting AJAX Requests
    24.4.3. Subclassing the Request Object
    24.5. El Router Standard
    24.5.1. Introducción
    24.5.2. Usando un Router
    24.5.3. Operación Básica del Rewrite Router
    24.5.4. Routes por Defecto
    24.5.5. URL Base y Subdirectorios
    24.5.6. Parámetros Globales
    24.5.7. Tipos de Route
    24.5.7.1. Zend_Controller_Router_Route
    24.5.7.1.1. Variables por Defecto
    24.5.7.1.2. Requerimientos para Variables
    24.5.7.1.3. Segmentos Traducidos
    24.5.7.2. Zend_Controller_Router_Route_Static
    24.5.7.3. Zend_Controller_Router_Route_Regex
    24.5.7.4. Zend_Controller_Router_Route_Hostname
    24.5.7.5. Zend_Controller_Router_Route_Chain
    24.5.7.5.1. Encadenar Rutas via Zend_Config
    24.5.8. Usando Zend_Config con RewriteRouter
    24.5.9. Subclassing del Router
    24.6. El Despachador
    24.6.1. Introducción
    24.6.2. Subclaseando el Despachador
    24.7. Controladores de Acción
    24.7.1. Introducción
    24.7.2. Inicialización de Objectos
    24.7.3. Ganchos de Pre- and Post-Despacho
    24.7.4. Accessors (Accededores)
    24.7.5. Integración de Vistas
    24.7.5.1. Inicialización de la Vista
    24.7.5.2. Suministrando las Vistas
    24.7.6. Métodos Utilitarios
    24.7.7. Controladores de Acción y haciendo Subclases
    24.8. Action Helpers
    24.8.1. Introduction
    24.8.2. Helper Initialization
    24.8.3. The Helper Broker
    24.8.4. Built-in Action Helpers
    24.8.4.1. ActionStack
    24.8.4.2. AutoComplete
    24.8.4.2.1. AutoCompletado con Dojo
    24.8.4.2.2. AutoCompletion con Scriptaculous
    24.8.4.3. ContextSwitch con AjaxContext
    24.8.4.3.1. Contextos Disponibles por Defecto
    24.8.4.3.2. Creando Contextos Personalizados
    24.8.4.3.3. Estableciendo los Contextos por Acción
    24.8.4.3.4. Inicializando Conmutación de Contextos (Context Switching)
    24.8.4.3.5. Funcionalidad Adicional
    24.8.4.3.6. Funcionalidad de AjaxContext
    24.8.4.4. FlashMessenger
    24.8.4.4.1. Introducción
    24.8.4.4.2. Ejemplo Básico de Uso
    24.8.4.5. JSON
    24.8.4.6. Redirector
    24.8.4.6.1. Introducción
    24.8.4.6.2. Ejemplos Básicos de Uso
    24.8.4.7. ViewRenderer
    24.8.4.7.1. Introducción
    24.8.4.7.2. API
    24.8.4.7.3. Ejemplos Uso Básico
    24.8.4.7.4. Ejemplos de Uso Avanzado
    24.8.5. Writing Your Own Helpers
    24.9. The Response Object
    24.9.1. Usage
    24.9.2. Manipulating Headers
    24.9.3. Named Segments
    24.9.4. Testing for Exceptions in the Response Object
    24.9.5. Subclassing the Response Object
    24.10. Plugins
    24.10.1. Introduction
    24.10.2. Writing Plugins
    24.10.3. Using Plugins
    24.10.4. Retrieving and Manipulating Plugins
    24.10.5. Plugins Included in the Standard Distribution
    24.10.5.1. ActionStack
    24.10.5.2. Zend_Controller_Plugin_ErrorHandler
    24.10.5.2.1. Using the ErrorHandler as a 404 Handler
    24.10.5.2.2. Handling Previously Rendered Output
    24.10.5.2.3. Plugin Usage Examples
    24.10.5.2.4. Error Controller Example
    24.10.5.3. Zend_Controller_Plugin_PutHandler
    24.11. Using a Conventional Modular Directory Structure
    24.11.1. Introduction
    24.11.2. Specifying Module Controller Directories
    24.11.3. Routing to Modules
    24.11.4. Module or Global Default Controller
    24.12. Excepciones MVC
    24.12.1. Introducción
    24.12.2. Manejando las Excepciones
    24.12.3. Excepciones MVC que Usted Pueda Encontrar

    24.1. Inicio rápido a Zend_Controller

    24.1.1. Introducción

    Zend_Controller es el corazón del sistema de MVC de Zend Framework MVC . MVC son las siglas de Modelo-Vista-Controlador y es un patrón de diseño con el objetivo de separar la lógica de la aplicación de la lógica de visualización. Zend_Controller_Front implementa el patrón Front Controller (Controlador Frontal) en el cual todas las transacciones HTTP (requests) son interceptadas por el controlador frontal y enviado a una Acción particular de un Controlador según la URL pedida.

    El sistema Zend_Controller fue construido con la extensibilidad en mente, ya sea heredando las clases existentes, escribiendo nuevas clases que implementan varias interfaces o clases abstractas que forman la base de la familia de clases del controlador, o escribiendo plugins o helpers de las acciones para aumentar o manipular la funcionalidad del sistema.

    24.1.2. Quick Start

    Si necesita información más detallada, mire las secciones siguientes. Si solamente quiere inicializar y ejecutar una aplicación rápidamente, siga leyendo.

    24.1.2.1. Cree su estructura de archivos

    El primer paso es crear su estructura de archivos. La estructura típica es la siguiente:

    application/
        
    controllers/
            
    IndexController.php
        models
    /
        
    views/
            
    scripts/
                
    index/
                    
    index.phtml
            helpers
    /
            
    filters/
    html/
        .
    htaccess
        index
    .php

    24.1.2.2. Establezca el document root

    Apunte su document root en su servidor web hacia el directorio html/ de la estructura de archivos de arriba.

    24.1.2.3. Cree sus reglas de reescritura

    Edite el archivo html/.htaccess que aparece arriba de la siguiente forma:

    RewriteEngine On
    RewriteCond 
    %{REQUEST_FILENAME} -[OR]
    RewriteCond %{REQUEST_FILENAME} -[OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule 
    ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
    [Nota] Learn about mod_rewrite

    The above rewrite rules allow access to any file under your virtual host's document root. If there are files you do not want exposed in this way, you may want to be more restrictive in your rules. Go to the Apache website to learn more about mod_rewrite .

    If using IIS 7.0, use the following as your rewrite configuration:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
         <system.webServer>
             <rewrite>
                 <rules>
                     <rule name="Imported Rule 1" stopProcessing="true">
                         <match url="^.*$" />
                         <conditions logicalGrouping="MatchAny">
                             <add input="{REQUEST_FILENAME}"
                                 matchType="IsFile" pattern=""
                                 ignoreCase="false" />
                             <add input="{REQUEST_FILENAME}"
                                 matchType="IsDirectory"
                                 pattern="" ignoreCase="false" />
                         </conditions>
                         <action type="None" />
                     </rule>
                     <rule name="Imported Rule 2" stopProcessing="true">
                         <match url="^.*$" />
                         <action type="Rewrite" url="index.php" />
                     </rule>
                 </rules>
             </rewrite>
         </system.webServer>
    </configuration>

    La regla de arriba redirigirá las peticiones a recuros existentes (enlaces simbólicos existentes, archivos no vacíos, o directorios no vacíos) en consecuencia, y todas las otras peticiones al front controller.

    [Nota] Nota

    Las reglas de arriba pertenecen a Apache. Para ejemplos de reglas de rewrite para otros servidores web, mire la documentación de router .

    24.1.2.4. Crear el archivo bootstrap

    El archivo bootstrap es la página a la que todas las peticiones son redirigidas a través de -- html/index.php en este caso. Abra el archivo html/index.php en el editor de su elección y añada lo siguiente:

    Zend_Controller_Front::run('/path/to/app/controllers');

    Esto instanciará y hará un dispatch del front controller, que redigirá las peticiones a los action controllers.

    24.1.2.5. Crear el action controller por defecto

    Antes de tratar los action controllers, debe primero entender cómo las peticiones son redirigidas en Zend Framework. Por defecto, el primero segmento de una ruta URL apunta a un controlador, y el segundo a una acción. Por ejemplo, dada la URL http://framework.zend.com/roadmap/components , la ruta es /roadmap/components , que apuntará al controlador roadmap y la acción components . Si no se suministra una acción, se asume la acción index , y si no se suministra un controlador, se asume el controlador index (siguiendo la convención de Apache de apuntar a DirectoryIndex automáticamente).

    El dispatcher de Zend_Controller toma entonces el valor del controlador y lo apunta a una clase. Por defecto, pone en mayúsculas la primera letra del nombre de controlador y agrega la palabra Controller . De esta forma, en nuestro ejemplo de arriba, el controlador roadmap es dirigido a la clase RoadmapController .

    De la misma forma, el valor de action es dirigido a un método de la clase controladora. Por defecto, el valor se pasa a minúsculas, y la palabra Action es añadida. De esta forma, en nuestro ejemplo de arriba, la acción components se convierte en componentsAction , y el método final llamado es RoadmapController::componentsAction() .

    Continuando, creemos ahora un action controller y un método de acción por defecto. Como se ha dicho antes, el controlador por defecto y la acción llamada son ambos index . Abra el archivo application/controllers/IndexController.php , e introduzca lo siguiente:

    /** Zend_Controller_Action */
    class IndexController extends Zend_Controller_Action
    {
        public function 
    indexAction()
        {
        }
    }

    Por defecto, el action helper ViewRenderer está activado. Esto significa que simplemente definiendo un action method y un view script correspondiente, tendrá su contenido generado inmediatamente. Por defecto, Zend_View es usado como la capa Vista en el patrón MVC . El ViewRenderer hace algo de magia, y usa el nombre de controlador (e.g., index ) y el nombre de acción actual (e.g., index ) para determinar qué plantilla traer. Por defecto, las plantillas terminan con la extensión .phtml , lo que significa que en el ejemplo de arriba, la plantilla index/index.phtml será generada. Adicionalmente, el ViewRenderer asume automáticamente que la carpeta views al mismo nivel que la carpeta controller será la carpeta raíz de la vista, y que el script de vista actual estará en la subcarpeta views/scripts/ . De esta forma, la plantilla generada será encontrada en application/views/scripts/index/index.phtml .

    24.1.2.6. Cree su view script

    Como hemos mencionado en la sección anterior , los scripts de vista se encuentran en application/views/scripts/ ; el view script para el controlador y la acción por defecto está en application/views/scripts/index/index.phtml . Cree este archivo, y escriba un poco de HTML:

    <!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
    >
    <
    html>
    <
    head>
      <
    meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <
    title>Mi primera aplicación Zend Framework</title>
    </
    head>
    <
    body>
        <
    h1>>¡HolaMundo!</h1>
    </
    body>
    </
    html>

    24.1.2.7. Cree su controlador de errores

    Por defecto, está registrado el plugin 'error handler' . Este plugin espera que exista un controlador para manejar los errores. Por defecto, asume un ErrorController en el módulo default con un método errorAction() :

    class ErrorController extends Zend_Controller_Action
    {
        public function 
    errorAction()
        {
        }
    }

    Asumiendo el sistema de carpetas discutido anteriormente, este archivo irá en application/controllers/ErrorController.php . También necesitará crear un view script en application/views/scripts/error/error.phtml ; el contenido de ejemplo será parecido a:

    <!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
    >
    <
    html>
    <
    head>
      <
    meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <
    title>Error</title>
    </
    head>
    <
    body>
        <
    h1>Ocurrió un error</h1>
        <
    p>Ocurrió un errorPor favorinténtelo de nuevo más tarde.</p>
    </
    body>
    </
    html>

    24.1.2.8. ¡Vea el sitio!

    Con su primer controlador y vista, ya puede arrancar su navegador y acceder a su sitio. Asumiendo que example.com es su dominio, cualquiera de las siguientes URL s le llevará a la página que acaba de crear:

    • http://example.com/

    • http://example.com/index

    • http://example.com/index/index

    Ya está listo para empezar a crear más métodos de controladores y acciones. ¡Felicidades!

    digg delicious meneame google twitter technorati facebook

    Comentarios

    Loading...