Zend_Controller-QuickStart.xml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. <sect1 id="zend.controller.quickstart">
  2. <title>Zend_Controller Início Rápido</title>
  3. <sect2 id="zend.controller.quickstart.introduction">
  4. <title>Introdução</title>
  5. <para>
  6. <code>Zend_Controller</code> é o coração do sistema MVC do Zend Framework.
  7. MVC significa <ulink
  8. url="http://en.wikipedia.org/wiki/Model-view-controller">Model-View-Controller</ulink>
  9. é um modelo de desenvolvimento voltado para a separação da lógica de aplicação da
  10. lógica de visualização. <code>Zend_Controller_Front</code> implementa um padrão de
  11. <ulink
  12. url="http://www.martinfowler.com/eaaCatalog/frontController.html">Front
  13. Controller</ulink>, no qual todos os pedidos são
  14. interceptado pelo controlador e despachados individualmente
  15. para ações baseadas no URL requerido.
  16. </para>
  17. <para>
  18. O sistema <code>Zend_Controller</code> foi construído com a extensibilidade
  19. em mente, tanto por derivação das classes existentes, como escrevendo
  20. novas classes que implementam as várias interfaces e classes abstratas
  21. que formam a fundação da família classes controladoras, ou escrevendo
  22. plugins ou ações auxiliadoras para aumentar ou manipular a funcionalidade
  23. do sistema.
  24. </para>
  25. </sect2>
  26. <sect2 id="zend.controller.quickstart.go">
  27. <title>Início Rápido</title>
  28. <para>
  29. Se você necessita informações mais detalhadas, veja as seções seguintes.
  30. Se você quiser começar rápido, continue lendo.
  31. </para>
  32. <sect3 id="zend.controller.quickstart.go.directory">
  33. <title>Crie sua estrutura de arquivos</title>
  34. <para>
  35. O primeiro passo é criar sua estrutura de arquivos. A estrutura
  36. típica é a seguinte:
  37. </para>
  38. <programlisting role="php"><![CDATA[
  39. application/
  40. controllers/
  41. IndexController.php
  42. models/
  43. views/
  44. scripts/
  45. index/
  46. index.phtml
  47. helpers/
  48. filters/
  49. html/
  50. .htaccess
  51. index.php
  52. ]]></programlisting>
  53. </sect3>
  54. <sect3 id="zend.controller.quickstart.go.docroot">
  55. <title>Estabeleça seu documento raiz</title>
  56. <para>
  57. No seu servidor web, defina seu documento raiz para
  58. o diretório <code>html</code> da estrutura de arquivos
  59. acima mencionada.
  60. </para>
  61. </sect3>
  62. <sect3 id="zend.controller.quickstart.go.rewrite">
  63. <title>Crie suas regras de re-escrita</title>
  64. <para>
  65. Edite o arquivo <code>html/.htaccess</code> acima
  66. para ficar como:
  67. </para>
  68. <programlisting role="php"><![CDATA[
  69. RewriteEngine on
  70. RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
  71. ]]></programlisting>
  72. <para>
  73. As regas acima irão enviar qualquer solicitação
  74. a não-recurso (imagens, folhas de estilo) para
  75. o controlador de frente. Se existir outras extensões
  76. que você queira excluir do controlador de frente
  77. (PDFs, arquivos texto, etc), adicione suas extensões
  78. ao comutador, ou crie suas próprias regras de re-escrita.
  79. </para>
  80. <note>
  81. <para>
  82. As regas de re-escrita acima são para o Apache; para exemplos de
  83. regras de re-escrita para outros servidores web, veja a
  84. <link
  85. linkend="zend.controller.router.introduction">documentação do
  86. roteador</link>.
  87. </para>
  88. </note>
  89. </sect3>
  90. <sect3 id="zend.controller.quickstart.go.bootstrap">
  91. <title>Crie seu arquivo de inicialização</title>
  92. <para>
  93. O arquivo de inicialização é a página onde todas as requisições passam
  94. -- <code>html/index.php</code> no caso. Abra o arquivo
  95. <code>html/index.php</code> em um editor de sua escolha e adicione
  96. o seguinte:
  97. </para>
  98. <programlisting role="php"><![CDATA[<?php
  99. require_once 'Zend/Controller/Front.php';
  100. Zend_Controller_Front::run('/path/to/app/controllers');
  101. ]]></programlisting>
  102. <para>
  103. Isto irá criar e despachar o controlador de frente, que irá encaminhar
  104. as requisições para os controladores de ação.
  105. </para>
  106. </sect3>
  107. <sect3 id="zend.controller.quickstart.go.controller">
  108. <title>Crie o seu controlador de ação padrão</title>
  109. <para>
  110. Antes de discutir controladores de ação, você deve primeiro
  111. entender como as requisições são roterizadas no Zend Framework.
  112. Por padrão, o primeiro seguimento de um caminho de um URL
  113. aponta para um controlador, o segundo para uma ação.
  114. Por exemplo, dado o URL
  115. <code>http://framework.zend.com/roadmap/components</code>, o
  116. caminho é <code>/roadmap/components</code>, que irá apontar para o
  117. controlador <code>roadmap</code> e para a ação
  118. <code>components</code>. Se nenhuma ação for informada, a ação
  119. <code>index</code> é assumida, e se nenhum controlador for informado,
  120. o controlador <code>index</code> é assumido (Seguindo a convenção do
  121. Apache que mapeia um <code>DirectoryIndex</code> automaticamente).
  122. </para>
  123. <para>
  124. O expedidor do <code>Zend_Controller</code> toma o
  125. valor do controlador e mapeia-o para uma classe.
  126. Por padrão, ele pega o nome do controlador, com a primeira
  127. letra em maiúsculo, e acrescenta a palavra
  128. <code>Controller</code>. Sendo assim, em nosso exemplo acima,
  129. o controlador <code>roadmap</code> é mapeado para a classe
  130. <code>RoadmapController</code>.
  131. </para>
  132. <para>
  133. Semelhantemente, o valor da ação é mapeado para um método da
  134. classe do controlador. Por padrão, o valor é transformado em
  135. letras minúsculas, e a palavra <code>Action</code> é acrescentada.
  136. Sendo assim, em nosso exemplo acima, a ação <code>components</code>
  137. torna-se <code>componentsAction</code>, e o método final chamado
  138. é <code>RoadmapController::componentsAction()</code>.
  139. </para>
  140. <para>
  141. Então, seguindo em frente, vamos agora criar um controlador
  142. de ação padrão e um método de ação. Como mencionado anteriormente,
  143. o controlador padrão e a ação são ambos chamados <code>index</code>.
  144. Abra o arquivo <code>application/controllers/IndexController.php</code>,
  145. e introduza o seguinte:
  146. </para>
  147. <programlisting role="php"><![CDATA[<?php
  148. /** Zend_Controller_Action */
  149. require_once 'Zend/Controller/Action.php';
  150. class IndexController extends Zend_Controller_Action
  151. {
  152. public function indexAction()
  153. {
  154. }
  155. }
  156. ]]></programlisting>
  157. <para>
  158. O ajudante de ação <link
  159. linkend="zend.controller.actionhelpers.viewrenderer">ViewRenderer</link>
  160. é habilitado por padrão. Isto significa que apenas
  161. definindo um método de ação simples e o script de visão correspondente,
  162. você terá o seu conteúdo mostrador imediatamente. Por padrão,
  163. <code>Zend_View</code> é usado como a camada de Visaulização
  164. do MVC. O <code>ViewRenderer</code> faz alguma mágica, e usa
  165. o nome do controlador (ex.: <code>index</code>) para determinar
  166. qual modelo mostrar. Por padrão, modelos terminam com a
  167. extensão <code>.phtml</code>, então isto significa que,
  168. no exemplo acima o modelo <code>index/index.phtml</code>
  169. será mostrado. Adicionalmente, o <code>ViewRenderer</code>
  170. automaticamente assume que o diretório <code>views</code>
  171. no mesmo nível que do diretório do controlador será o
  172. diretório base de visualização, e que o atual script de
  173. visualização estará no subdiretório <code>views/scripts/</code>,
  174. Sendo assim, o modelo mostrado é encontrado em
  175. <code>application/views/scripts/index/index.phtml</code>.
  176. </para>
  177. </sect3>
  178. <sect3 id="zend.controller.quickstart.go.view">
  179. <title>Crie o seu script de visualização</title>
  180. <para>
  181. Com mensionado <link
  182. linkend="zend.controller.quickstart.go.controller"> na seção
  183. anterior</link>, scripts de visualização são encontrados em
  184. <code>application/views/scripts/</code>; O script padrão para
  185. o controlador e ação padrão está em
  186. <code>application/views/scripts/index/index.phtml</code>.
  187. Crie este arquivo e tecle algum HTML:
  188. </para>
  189. <programlisting role="php"><![CDATA[
  190. <!DOCTYPE html
  191. PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  192. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  193. <html>
  194. <head>
  195. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  196. <title>My first Zend Framework App</title>
  197. </head>
  198. <body>
  199. <h1>Hello, World!</h1>
  200. </body>
  201. </html>
  202. ]]></programlisting>
  203. </sect3>
  204. <sect3 id="zend.controller.quickstart.go.errorhandler">
  205. <title>Crie seu controlador de erro</title>
  206. <para>
  207. Por padrão, <link
  208. linkend="zend.controller.plugins.standard.errorhandler">plugin
  209. do manipulador de erro</link> é registrado. Este plugin espera
  210. que um controlador para manipular erros exista. Por padrão, ele
  211. assume um <code>ErrorController</code> no módulo padrão com um
  212. método <code>errorAction</code>:
  213. </para>
  214. <programlisting role="php"><![CDATA[<?php
  215. /** Zend_Controller_Action */
  216. require_once 'Zend/Controller/Action.php';
  217. class ErrorController extends Zend_Controller_Action
  218. {
  219. public function errorAction()
  220. {
  221. }
  222. }
  223. ]]></programlisting>
  224. <para>
  225. Assumindo o layout de diretório discutido, este arquivo estará
  226. em <code>application/controllers/ErrorController.php</code>.
  227. Você também precisará criar o script de visualização em
  228. <code>application/views/scripts/error/error.phtml</code>;
  229. o conteúdo do exemplo parecerá com:
  230. </para>
  231. <programlisting role="php"><![CDATA[
  232. <!DOCTYPE html
  233. PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  234. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  235. <html>
  236. <head>
  237. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  238. <title>Error</title>
  239. </head>
  240. <body>
  241. <h1>An error occurred</h1>
  242. <p>An error occurred; please try again later.</p>
  243. </body>
  244. </html>
  245. ]]></programlisting>
  246. </sect3>
  247. <sect3 id="zend.controller.quickstart.go.finish">
  248. <title>Veja o site!</title>
  249. <para>
  250. Com o seu primeiro controlador e visualizador embaixo do seu cinto,
  251. você agora pode disparar o seu navegador e navegar para o site.
  252. Assumindo que o seu domínio é <code>example.com</code>, qualquer
  253. dos seguintes URLs irão mostrar a página que acabamos de criar:
  254. </para>
  255. <itemizedlist>
  256. <listitem><para><code>http://example.com/</code></para></listitem>
  257. <listitem><para><code>http://example.com/index</code></para></listitem>
  258. <listitem><para><code>http://example.com/index/index</code></para></listitem>
  259. </itemizedlist>
  260. <para>
  261. Você agora está pronto para iniciar a criação de mais controladores
  262. e metódos de ação. Parabéns!
  263. </para>
  264. </sect3>
  265. </sect2>
  266. </sect1>
  267. <!--
  268. vim:se ts=4 sw=4 et:
  269. -->