Zend_Controller-QuickStart.xml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.controller.quickstart">
  5. <title>Inicio rápido a Zend_Controller</title>
  6. <sect2 id="zend.controller.quickstart.introduction">
  7. <title>Introducción</title>
  8. <para>
  9. <methodname>Zend_Controller</methodname>
  10. es el corazón del sistema de MVC de Zend Framework MVC. MVC
  11. son las siglas de
  12. <ulink url="http://en.wikipedia.org/wiki/Model-view-controller">
  13. Modelo-Vista-Controlador
  14. </ulink>
  15. y es un patrón de diseño con el objetivo de separar la
  16. lógica de la aplicación de la lógica de visualización.
  17. <methodname>Zend_Controller_Front</methodname>
  18. implementa el patrón
  19. <ulink url="http://www.martinfowler.com/eaaCatalog/frontController.html">
  20. Front Controller (Controlador Frontal)
  21. </ulink>
  22. en el cual todas las transacciones HTTP (requests) son
  23. interceptadas por el controlador frontal y enviado a una
  24. Acción particular de un Controlador según la URL pedida.
  25. </para>
  26. <para>
  27. El sistema
  28. <methodname>Zend_Controller</methodname>
  29. fue construido con la extensibilidad en mente, ya sea
  30. heredando las clases existentes, escribiendo nuevas clases
  31. que implementan varias interfaces o clases abstractas que
  32. forman la base de la familia de clases del controlador, o
  33. escribiendo plugins o helpers de las acciones para aumentar
  34. o manipular la funcionalidad del sistema.
  35. </para>
  36. </sect2>
  37. <sect2 id="zend.controller.quickstart.go">
  38. <title>Quick Start</title>
  39. <para>
  40. Si necesita información más detallada, mire las secciones
  41. siguientes. Si solamente quiere inicializar y ejecutar una
  42. aplicación rápidamente, siga leyendo.
  43. </para>
  44. <sect3 id="zend.controller.quickstart.go.directory">
  45. <title>Cree su estructura de archivos</title>
  46. <para>
  47. El primer paso es crear su estructura de archivos. La
  48. estructura típica es la siguiente:
  49. </para>
  50. <programlisting language="php"><![CDATA[
  51. application/
  52. controllers/
  53. IndexController.php
  54. models/
  55. views/
  56. scripts/
  57. index/
  58. index.phtml
  59. helpers/
  60. filters/
  61. html/
  62. .htaccess
  63. index.php
  64. ]]></programlisting>
  65. </sect3>
  66. <sect3 id="zend.controller.quickstart.go.docroot">
  67. <title>Establezca su document root</title>
  68. <para>
  69. Apunte su document root en su servidor web hacia el
  70. directorio
  71. <methodname>html</methodname>
  72. de la estructura de archivos de arriba.
  73. </para>
  74. </sect3>
  75. <sect3 id="zend.controller.quickstart.go.rewrite">
  76. <title>Cree sus reglas de reescritura</title>
  77. <para>
  78. Edite el archivo
  79. <methodname>html/.htaccess</methodname>
  80. que aparece arriba de la siguiente forma:
  81. </para>
  82. <programlisting language="php"><![CDATA[
  83. RewriteEngine On
  84. RewriteCond %{REQUEST_FILENAME} -s [OR]
  85. RewriteCond %{REQUEST_FILENAME} -l [OR]
  86. RewriteCond %{REQUEST_FILENAME} -d
  87. RewriteRule ^.*$ - [NC,L]
  88. RewriteRule ^.*$ index.php [NC,L]
  89. ]]></programlisting>
  90. <para>
  91. La regla de arriba redirigirá las peticiones a recuros existentes
  92. (enlaces simbólicos existentes, archivos no vacíos, o directorios no vacíos)
  93. en consecuencia, y todas las otras peticiones al front controller.
  94. </para>
  95. <note>
  96. <para>
  97. Las reglas de arriba pertenecen a Apache. Para ejemplos de reglas
  98. de rewrite para otros servidores web, mire la
  99. <link linkend="zend.controller.router.introduction">
  100. documentación de router
  101. </link>
  102. .
  103. </para>
  104. </note>
  105. </sect3>
  106. <sect3 id="zend.controller.quickstart.go.bootstrap">
  107. <title>Cree su archivo bootstrap</title>
  108. <para>
  109. El archivo bootstrap es la página a la que todas las peticiones
  110. son redirigidas a través de --
  111. <methodname>html/index.php</methodname>
  112. en este caso. Abra el archivo
  113. <methodname>html/index.php</methodname>
  114. en el editor de su elección y añada lo siguiente:
  115. </para>
  116. <programlisting language="php"><![CDATA[
  117. Zend_Controller_Front::run('/path/to/app/controllers');
  118. ]]></programlisting>
  119. <para>
  120. Esto instanciará y hará un dispatch del front controller, que
  121. redigirá las peticiones a los action controllers.
  122. </para>
  123. </sect3>
  124. <sect3 id="zend.controller.quickstart.go.controller">
  125. <title>Cree su action controller por defecto</title>
  126. <para>
  127. Antes de tratar los action controllers, debe primero
  128. entender cómo las peticiones son redirigidas en Zend Framework.
  129. Por defecto, el primero segmento de una ruta URL apunta
  130. a un controlador, y el segundo a una acción. Por ejemplo,
  131. dada la URL
  132. <methodname>
  133. http://framework.zend.com/roadmap/components
  134. </methodname>
  135. , la ruta es
  136. <methodname>/roadmap/components</methodname>
  137. , que apuntará al controlador
  138. <methodname>roadmap</methodname>
  139. y la acción
  140. <methodname>components</methodname>
  141. . Si no se suministra una acción, se asume la acción
  142. <methodname>index</methodname>
  143. , y si no se suministra un controlador, se asume el controlador
  144. <methodname>index</methodname>
  145. (siguiendo la convención de Apache de apuntar a
  146. <methodname>DirectoryIndex</methodname>
  147. automáticamente).
  148. </para>
  149. <para>
  150. El dispatcher de <methodname>Zend_Controller</methodname>
  151. toma entonces el valor del controlador y lo apunta
  152. a una clase. Por defecto, pone en mayúsculas la primera letra
  153. del nombre de controlador y agrega la palabra
  154. <methodname>Controller</methodname>
  155. . De esta forma, en nuestro ejemplo de arriba, el controlador
  156. <methodname>roadmap</methodname>
  157. es dirigido a la clase
  158. <methodname>RoadmapController</methodname>
  159. .
  160. </para>
  161. <para>
  162. De la misma forma, el valor de action es dirigido
  163. a un método de la clase controladora. Por defecto, el valor se
  164. pasa a minúsculas, y la palabra
  165. <methodname>Action</methodname>
  166. es añadida. De esta forma, en nuestro ejemplo de arriba, la acción
  167. <methodname>components</methodname>
  168. se convierte en
  169. <methodname>componentsAction</methodname>
  170. , y el método final llamado es
  171. <methodname>RoadmapController::componentsAction()</methodname>
  172. .
  173. </para>
  174. <para>
  175. Continuando, creemos ahora un action controller
  176. y un método de acción por defecto. Como se ha dicho antes,
  177. el controlador por defecto y la acción llamada son ambos
  178. <methodname>index</methodname>
  179. . Abra el archivo
  180. <methodname>application/controllers/IndexController.php</methodname>
  181. , e introduzca lo siguiente:
  182. </para>
  183. <programlisting language="php"><![CDATA[
  184. /** Zend_Controller_Action */
  185. class IndexController extends Zend_Controller_Action
  186. {
  187. public function indexAction()
  188. {
  189. }
  190. }
  191. ]]></programlisting>
  192. <para>
  193. Por defecto, el action helper
  194. <link linkend="zend.controller.actionhelpers.viewrenderer">
  195. ViewRenderer
  196. </link>
  197. está activado. Esto significa que simplemente
  198. definiendo un action method y un view script correspondiente,
  199. tendrá su contenido generado inmediatamente.
  200. Por defecto,
  201. <methodname>Zend_View</methodname>
  202. es usado como la capa Vista en el patrón MVC. El
  203. <methodname>ViewRenderer</methodname>
  204. hace algo de magia, y usa el nombre de controlador (e.g.,
  205. <methodname>index</methodname>
  206. ) y el nombre de acción actual (e.g.,
  207. <methodname>index</methodname>
  208. ) para determinar qué plantilla traer. Por defecto,
  209. las plantillas terminan con la extensión
  210. <methodname>.phtml</methodname>
  211. , lo que significa que en el ejemplo de arriba, la
  212. plantilla
  213. <methodname>index/index.phtml</methodname>
  214. será generada. Adicionalmente, el
  215. <methodname>ViewRenderer</methodname>
  216. asume automáticamente que la carpeta
  217. <methodname>views</methodname>
  218. al mismo nivel que la carpeta controller será
  219. la carpeta raíz de la vista, y que el script de vista actual
  220. estará en la subcarpeta
  221. <methodname>views/scripts/</methodname>.
  222. De esta forma, la plantilla generada será encontrada en
  223. <methodname>application/views/scripts/index/index.phtml</methodname>
  224. .
  225. </para>
  226. </sect3>
  227. <sect3 id="zend.controller.quickstart.go.view">
  228. <title>Cree su view script</title>
  229. <para>
  230. Como hemos mencionado
  231. <link linkend="zend.controller.quickstart.go.controller">
  232. en la sección anterior
  233. </link>
  234. , los scripts de vista se encuentran en
  235. <methodname>application/views/scripts/</methodname>
  236. ; el view script para el controlador y la acción por defecto
  237. está en
  238. <methodname>application/views/scripts/index/index.phtml</methodname>
  239. . Cree este archivo, y escriba un poco de HTML:
  240. </para>
  241. <programlisting language="php"><![CDATA[
  242. <!DOCTYPE html
  243. PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  244. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  245. <html>
  246. <head>
  247. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  248. <title>Mi primera aplicación Zend Framework</title>
  249. </head>
  250. <body>
  251. <h1>>¡Hola, Mundo!</h1>
  252. </body>
  253. </html>
  254. ]]></programlisting>
  255. </sect3>
  256. <sect3 id="zend.controller.quickstart.go.errorhandler">
  257. <title>Cree su controlador de errores</title>
  258. <para>
  259. Por defecto, está registrado
  260. <link linkend="zend.controller.plugins.standard.errorhandler">
  261. el plugin 'error handler'
  262. </link>. Este plugin espera que exista
  263. un controlador para manejar los errores.
  264. Por defecto, asume un
  265. <methodname>ErrorController</methodname>
  266. en el módulo default con un método
  267. <methodname>errorAction</methodname>
  268. :
  269. </para>
  270. <programlisting language="php"><![CDATA[
  271. class ErrorController extends Zend_Controller_Action
  272. {
  273. public function errorAction()
  274. {
  275. }
  276. }
  277. ]]></programlisting>
  278. <para>
  279. Asumiendo el sistema de carpetas discutido anteriormente,
  280. este archivo irá en
  281. <methodname>application/controllers/ErrorController.php</methodname>
  282. . También necesitará crear un view script en
  283. <methodname>application/views/scripts/error/error.phtml</methodname>
  284. ; el contenido de ejemplo será parecido a:
  285. </para>
  286. <programlisting language="php"><![CDATA[
  287. <!DOCTYPE html
  288. PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  289. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  290. <html>
  291. <head>
  292. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  293. <title>Error</title>
  294. </head>
  295. <body>
  296. <h1>Ocurrió un error</h1>
  297. <p>Ocurrió un error; Por favor, inténtelo de nuevo más tarde.</p>
  298. </body>
  299. </html>
  300. ]]></programlisting>
  301. </sect3>
  302. <sect3 id="zend.controller.quickstart.go.finish">
  303. <title>¡Vea el sitio!</title>
  304. <para>
  305. Con su primer controlador y vista, ya puede arrancar su navegador y acceder a su sitio.
  306. Asumiendo que
  307. <methodname>example.com</methodname>
  308. es su dominio, cualquiera de las siguientes URLs le llevará a
  309. la página que acaba de crear:
  310. </para>
  311. <itemizedlist>
  312. <listitem>
  313. <para>
  314. <methodname>http://example.com/</methodname>
  315. </para>
  316. </listitem>
  317. <listitem>
  318. <para>
  319. <methodname>http://example.com/index</methodname>
  320. </para>
  321. </listitem>
  322. <listitem>
  323. <para>
  324. <methodname>http://example.com/index/index</methodname>
  325. </para>
  326. </listitem>
  327. </itemizedlist>
  328. <para>
  329. Ya está listo para empezar a crear más métodos de controladores y acciones. ¡Felicidades!
  330. </para>
  331. </sect3>
  332. </sect2>
  333. </sect1>
  334. <!--
  335. vim:se ts=4 sw=4 et:
  336. -->