| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 15103 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.controller.quickstart">
- <title>Inicio rápido a Zend_Controller</title>
- <sect2 id="zend.controller.quickstart.introduction">
- <title>Introducción</title>
- <para>
- <code>Zend_Controller</code>
- es el corazón del sistema de MVC de Zend Framework MVC. MVC
- son las siglas de
- <ulink url="http://en.wikipedia.org/wiki/Model-view-controller">
- Modelo-Vista-Controlador
- </ulink>
- 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.
- <code>Zend_Controller_Front</code>
- implementa el patrón
- <ulink url="http://www.martinfowler.com/eaaCatalog/frontController.html">
- Front Controller (Controlador Frontal)
- </ulink>
- 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.
- </para>
- <para>
- El sistema
- <code>Zend_Controller</code>
- 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.
- </para>
- </sect2>
- <sect2 id="zend.controller.quickstart.go">
- <title>Quick Start</title>
- <para>
- Si necesita información más detallada, mire las secciones
- siguientes. Si solamente quiere inicializar y ejecutar una
- aplicación rápidamente, siga leyendo.
- </para>
- <sect3 id="zend.controller.quickstart.go.directory">
- <title>Cree su estructura de archivos</title>
- <para>
- El primer paso es crear su estructura de archivos. La
- estructura típica es la siguiente:
- </para>
- <programlisting role="php"><![CDATA[
- application/
- controllers/
- IndexController.php
- models/
- views/
- scripts/
- index/
- index.phtml
- helpers/
- filters/
- html/
- .htaccess
- index.php
- ]]></programlisting>
- </sect3>
- <sect3 id="zend.controller.quickstart.go.docroot">
- <title>Establezca su document root</title>
- <para>
- Apunte su document root en su servidor web hacia el
- directorio
- <code>html</code>
- de la estructura de archivos de arriba.
- </para>
- </sect3>
- <sect3 id="zend.controller.quickstart.go.rewrite">
- <title>Cree sus reglas de reescritura</title>
- <para>
- Edite el archivo
- <code>html/.htaccess</code>
- que aparece arriba de la siguiente forma:
- </para>
- <programlisting role="php"><![CDATA[
- RewriteEngine On
- RewriteCond %{REQUEST_FILENAME} -s [OR]
- RewriteCond %{REQUEST_FILENAME} -l [OR]
- RewriteCond %{REQUEST_FILENAME} -d
- RewriteRule ^.*$ - [NC,L]
- RewriteRule ^.*$ index.php [NC,L]
- ]]></programlisting>
- <para>
- 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.
- </para>
- <note>
- <para>
- Las reglas de arriba pertenecen a Apache. Para ejemplos de reglas
- de rewrite para otros servidores web, mire la
- <link linkend="zend.controller.router.introduction">
- documentación de router
- </link>
- .
- </para>
- </note>
- </sect3>
- <sect3 id="zend.controller.quickstart.go.bootstrap">
- <title>Cree su archivo bootstrap</title>
- <para>
- El archivo bootstrap es la página a la que todas las peticiones
- son redirigidas a través de --
- <code>html/index.php</code>
- en este caso. Abra el archivo
- <code>html/index.php</code>
- en el editor de su elección y añada lo siguiente:
- </para>
- <programlisting role="php"><![CDATA[
- Zend_Controller_Front::run('/path/to/app/controllers');
- ]]></programlisting>
- <para>
- Esto instanciará y hará un dispatch del front controller, que
- redigirá las peticiones a los action controllers.
- </para>
- </sect3>
- <sect3 id="zend.controller.quickstart.go.controller">
- <title>Cree su action controller por defecto</title>
- <para>
- 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
- <code>
- http://framework.zend.com/roadmap/components
- </code>
- , la ruta es
- <code>/roadmap/components</code>
- , que apuntará al controlador
- <code>roadmap</code>
- y la acción
- <code>components</code>
- . Si no se suministra una acción, se asume la acción
- <code>index</code>
- , y si no se suministra un controlador, se asume el controlador
- <code>index</code>
- (siguiendo la convención de Apache de apuntar a
- <code>DirectoryIndex</code>
- automáticamente).
- </para>
- <para>
- El dispatcher de <code>Zend_Controller</code>
- 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
- <code>Controller</code>
- . De esta forma, en nuestro ejemplo de arriba, el controlador
- <code>roadmap</code>
- es dirigido a la clase
- <code>RoadmapController</code>
- .
- </para>
- <para>
- 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
- <code>Action</code>
- es añadida. De esta forma, en nuestro ejemplo de arriba, la acción
- <code>components</code>
- se convierte en
- <code>componentsAction</code>
- , y el método final llamado es
- <code>RoadmapController::componentsAction()</code>
- .
- </para>
- <para>
- 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
- <code>index</code>
- . Abra el archivo
- <code>application/controllers/IndexController.php</code>
- , e introduzca lo siguiente:
- </para>
- <programlisting role="php"><![CDATA[
- /** Zend_Controller_Action */
- class IndexController extends Zend_Controller_Action
- {
- public function indexAction()
- {
- }
- }
- ]]></programlisting>
- <para>
- Por defecto, el action helper
- <link linkend="zend.controller.actionhelpers.viewrenderer">
- ViewRenderer
- </link>
- está activado. Esto significa que simplemente
- definiendo un action method y un view script correspondiente,
- tendrá su contenido generado inmediatamente.
- Por defecto,
- <code>Zend_View</code>
- es usado como la capa Vista en el patrón MVC. El
- <code>ViewRenderer</code>
- hace algo de magia, y usa el nombre de controlador (e.g.,
- <code>index</code>
- ) y el nombre de acción actual (e.g.,
- <code>index</code>
- ) para determinar qué plantilla traer. Por defecto,
- las plantillas terminan con la extensión
- <code>.phtml</code>
- , lo que significa que en el ejemplo de arriba, la
- plantilla
- <code>index/index.phtml</code>
- será generada. Adicionalmente, el
- <code>ViewRenderer</code>
- asume automáticamente que la carpeta
- <code>views</code>
- 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
- <code>views/scripts/</code>.
- De esta forma, la plantilla generada será encontrada en
- <code>application/views/scripts/index/index.phtml</code>
- .
- </para>
- </sect3>
- <sect3 id="zend.controller.quickstart.go.view">
- <title>Cree su view script</title>
- <para>
- Como hemos mencionado
- <link linkend="zend.controller.quickstart.go.controller">
- en la sección anterior
- </link>
- , los scripts de vista se encuentran en
- <code>application/views/scripts/</code>
- ; el view script para el controlador y la acción por defecto
- está en
- <code>application/views/scripts/index/index.phtml</code>
- . Cree este archivo, y escriba un poco de HTML:
- </para>
- <programlisting role="php"><![CDATA[
- <!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>>¡Hola, Mundo!</h1>
- </body>
- </html>
- ]]></programlisting>
- </sect3>
- <sect3 id="zend.controller.quickstart.go.errorhandler">
- <title>Cree su controlador de errores</title>
- <para>
- Por defecto, está registrado
- <link linkend="zend.controller.plugins.standard.errorhandler">
- el plugin 'error handler'
- </link>. Este plugin espera que exista
- un controlador para manejar los errores.
- Por defecto, asume un
- <code>ErrorController</code>
- en el módulo default con un método
- <code>errorAction</code>
- :
- </para>
- <programlisting role="php"><![CDATA[
- class ErrorController extends Zend_Controller_Action
- {
- public function errorAction()
- {
- }
- }
- ]]></programlisting>
- <para>
- Asumiendo el sistema de carpetas discutido anteriormente,
- este archivo irá en
- <code>application/controllers/ErrorController.php</code>
- . También necesitará crear un view script en
- <code>application/views/scripts/error/error.phtml</code>
- ; el contenido de ejemplo será parecido a:
- </para>
- <programlisting role="php"><![CDATA[
- <!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 error; Por favor, inténtelo de nuevo más tarde.</p>
- </body>
- </html>
- ]]></programlisting>
- </sect3>
- <sect3 id="zend.controller.quickstart.go.finish">
- <title>¡Vea el sitio!</title>
- <para>
- Con su primer controlador y vista, ya puede arrancar su navegador y acceder a su sitio.
- Asumiendo que
- <code>example.com</code>
- es su dominio, cualquiera de las siguientes URLs le llevará a
- la página que acaba de crear:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <code>http://example.com/</code>
- </para>
- </listitem>
- <listitem>
- <para>
- <code>http://example.com/index</code>
- </para>
- </listitem>
- <listitem>
- <para>
- <code>http://example.com/index/index</code>
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Ya está listo para empezar a crear más métodos de controladores y acciones. ¡Felicidades!
- </para>
- </sect3>
- </sect2>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|