|
@@ -1,5 +1,5 @@
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
-<!-- EN-Revision: 15103 -->
|
|
|
|
|
|
|
+<!-- EN-Revision: 18556 -->
|
|
|
<!-- Reviewed: no -->
|
|
<!-- Reviewed: no -->
|
|
|
<sect1 id="zend.controller.action">
|
|
<sect1 id="zend.controller.action">
|
|
|
<title>Controladores de Acción</title>
|
|
<title>Controladores de Acción</title>
|
|
@@ -10,7 +10,7 @@
|
|
|
<classname>Zend_Controller_Action</classname> es una clase abstracta
|
|
<classname>Zend_Controller_Action</classname> es una clase abstracta
|
|
|
que puede utilizar para implementar controladores de acción
|
|
que puede utilizar para implementar controladores de acción
|
|
|
(Action Controllers) para usar con el Front Controller al crear un
|
|
(Action Controllers) para usar con el Front Controller al crear un
|
|
|
- un sitio basado en el patrón Modelo-Vista-Controlador (MVC).
|
|
|
|
|
|
|
+ un sitio basado en el patrón Modelo-Vista-Controlador (<acronym>MVC</acronym>).
|
|
|
</para>
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
<para>
|
|
@@ -47,9 +47,9 @@ class FooController extends Zend_Controller_Action
|
|
|
]]></programlisting>
|
|
]]></programlisting>
|
|
|
|
|
|
|
|
<para>
|
|
<para>
|
|
|
- La clase de arriba <methodname>FooController</methodname> (el controlador
|
|
|
|
|
- <methodname>foo</methodname>) define dos acciones, <methodname>bar</methodname> y
|
|
|
|
|
- <methodname>baz</methodname>.
|
|
|
|
|
|
|
+ La clase de arriba <emphasis>FooController</emphasis> (el controlador
|
|
|
|
|
+ <emphasis>foo</emphasis>) define dos acciones, <emphasis>bar</emphasis> y
|
|
|
|
|
+ <emphasis>baz</emphasis>.
|
|
|
</para>
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
<para>
|
|
@@ -97,15 +97,15 @@ class FooController extends Zend_Controller_Action
|
|
|
<para>
|
|
<para>
|
|
|
<methodname>initView()</methodname>, <methodname>getViewScript()</methodname>,
|
|
<methodname>initView()</methodname>, <methodname>getViewScript()</methodname>,
|
|
|
<methodname>render()</methodname>, y <methodname>renderScript()</methodname> cada
|
|
<methodname>render()</methodname>, y <methodname>renderScript()</methodname> cada
|
|
|
- proxy al <methodname>ViewRenderer</methodname> a menos que el ayudante no
|
|
|
|
|
|
|
+ proxy al <emphasis>ViewRenderer</emphasis> a menos que el ayudante no
|
|
|
esté como ayudante intermediario o no se haya establecido el
|
|
esté como ayudante intermediario o no se haya establecido el
|
|
|
- flag de <methodname>noViewRenderer</methodname>.
|
|
|
|
|
|
|
+ flag de <emphasis>noViewRenderer</emphasis>.
|
|
|
</para>
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
<para>
|
|
|
También puede simplemente desactivarse para una prestación
|
|
También puede simplemente desactivarse para una prestación
|
|
|
- individual ajustando el flag <methodname>noRender</methodname> de
|
|
|
|
|
- <methodname>ViewRenderer</methodname>:
|
|
|
|
|
|
|
+ individual ajustando el flag <emphasis>noRender</emphasis> de
|
|
|
|
|
+ <emphasis>ViewRenderer</emphasis>:
|
|
|
</para>
|
|
</para>
|
|
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
<programlisting language="php"><![CDATA[
|
|
@@ -121,12 +121,12 @@ class FooController extends Zend_Controller_Action
|
|
|
|
|
|
|
|
<para>
|
|
<para>
|
|
|
Las principales razones para desactivar
|
|
Las principales razones para desactivar
|
|
|
- <methodname>ViewRenderer</methodname> son si usted simplemente no necesita
|
|
|
|
|
|
|
+ <emphasis>ViewRenderer</emphasis> son si usted simplemente no necesita
|
|
|
una objeto "view" o si no está mostrándolos via view scripts
|
|
una objeto "view" o si no está mostrándolos via view scripts
|
|
|
(por ejemplo, cuando se utiliza un controlador de acción
|
|
(por ejemplo, cuando se utiliza un controlador de acción
|
|
|
- para alimentar a los protocolos de un servicio web como SOAP,
|
|
|
|
|
- XML-RPC, o REST). En muchos casos, nunca necesitará desactivar
|
|
|
|
|
- a <methodname>ViewRenderer</methodname> globalmente, sólo selectivamente
|
|
|
|
|
|
|
+ para alimentar a los protocolos de un servicio web como <acronym>SOAP</acronym>,
|
|
|
|
|
+ <acronym>XML-RPC</acronym>, o <acronym>REST</acronym>). En muchos casos, nunca necesitará desactivar
|
|
|
|
|
+ a <emphasis>ViewRenderer</emphasis> globalmente, sólo selectivamente
|
|
|
dentro de los distintos controladores o acciones.
|
|
dentro de los distintos controladores o acciones.
|
|
|
</para>
|
|
</para>
|
|
|
</note>
|
|
</note>
|
|
@@ -178,11 +178,44 @@ class FooController extends Zend_Controller_Action
|
|
|
métodos que pueden ser llamados para marcar una solicitud de acción,
|
|
métodos que pueden ser llamados para marcar una solicitud de acción,
|
|
|
<methodname>preDispatch()</methodname> y <methodname>postDispatch()</methodname>.
|
|
<methodname>preDispatch()</methodname> y <methodname>postDispatch()</methodname>.
|
|
|
Estas pueden ser útiles de varias maneras: verificar la
|
|
Estas pueden ser útiles de varias maneras: verificar la
|
|
|
- autenticación y ACLs antes de ejecutar una acción (llamando a
|
|
|
|
|
|
|
+ autenticación y <acronym>ACL</acronym>s antes de ejecutar una acción (llamando a
|
|
|
<methodname>_forward()</methodname> en <methodname>preDispatch()</methodname>, se saltará
|
|
<methodname>_forward()</methodname> en <methodname>preDispatch()</methodname>, se saltará
|
|
|
la acción), por ejemplo, o colocando contenido generado en una
|
|
la acción), por ejemplo, o colocando contenido generado en una
|
|
|
plantilla general del sitio (<methodname>postDispatch()</methodname>).
|
|
plantilla general del sitio (<methodname>postDispatch()</methodname>).
|
|
|
</para>
|
|
</para>
|
|
|
|
|
+
|
|
|
|
|
+ <note>
|
|
|
|
|
+ <title>Usage of init() vs. preDispatch()</title>
|
|
|
|
|
+
|
|
|
|
|
+ <para>
|
|
|
|
|
+ In the <link linkend="zend.controller.action.initialization">previous
|
|
|
|
|
+ section</link>, we introduced the <methodname>init()</methodname> method, and
|
|
|
|
|
+ in this section, the <methodname>preDispatch()</methodname> method. What is the
|
|
|
|
|
+ difference between them, and what actions would you take in each?
|
|
|
|
|
+ </para>
|
|
|
|
|
+
|
|
|
|
|
+ <para>
|
|
|
|
|
+ The <methodname>init()</methodname> method is primarily intended for extending the
|
|
|
|
|
+ constructor. Typically, your constructor should simply set object state, and not
|
|
|
|
|
+ perform much logic. This might include initializing resources used in the controller
|
|
|
|
|
+ (such as models, configuration objects, etc.), or assigning values retrieved from
|
|
|
|
|
+ the front controller, bootstrap, or a registry.
|
|
|
|
|
+ </para>
|
|
|
|
|
+
|
|
|
|
|
+ <para>
|
|
|
|
|
+ The <methodname>preDispatch()</methodname> method can also be used to set object
|
|
|
|
|
+ or environmental (e.g., view, action helper, etc.) state, but its primary purpose
|
|
|
|
|
+ is to make decisions about whether or not the requested action should be dispatched.
|
|
|
|
|
+ If not, you should then <methodname>_forward()</methodname> to another action, or
|
|
|
|
|
+ throw an exception.
|
|
|
|
|
+ </para>
|
|
|
|
|
+
|
|
|
|
|
+ <para>
|
|
|
|
|
+ Note: <methodname>_forward()</methodname> actually will not work correctly when
|
|
|
|
|
+ executed from <methodname>init()</methodname>, which is a formalization of the
|
|
|
|
|
+ intentions of the two methods.
|
|
|
|
|
+ </para>
|
|
|
|
|
+ </note>
|
|
|
</sect2>
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2 id="zend.controller.action.accessors">
|
|
<sect2 id="zend.controller.action.accessors">
|
|
@@ -229,9 +262,9 @@ $this->getResponse()->appendBody($content);
|
|
|
<para>
|
|
<para>
|
|
|
<emphasis>Parámetros de Requerimientos</emphasis>:
|
|
<emphasis>Parámetros de Requerimientos</emphasis>:
|
|
|
La objeto solicitud agrega parámetros de solicitud,
|
|
La objeto solicitud agrega parámetros de solicitud,
|
|
|
- como cualquiera de los parámetros _GET o _POST,
|
|
|
|
|
|
|
+ como cualquiera de los parámetros <constant>_GET</constant> o <constant>_POST</constant>,
|
|
|
o parámetros del usuario especificados en la información
|
|
o parámetros del usuario especificados en la información
|
|
|
- del path de la URL. Para recuperarlos, use
|
|
|
|
|
|
|
+ del path de la <acronym>URL</acronym>. Para recuperarlos, use
|
|
|
<methodname>_getParam($key)</methodname> o <methodname>_getAllParams()</methodname>.
|
|
<methodname>_getParam($key)</methodname> o <methodname>_getAllParams()</methodname>.
|
|
|
También se pueden establecer parámetros de solicitud usando
|
|
También se pueden establecer parámetros de solicitud usando
|
|
|
<methodname>_setParam()</methodname>; lo que es útil cuando se reenvían
|
|
<methodname>_setParam()</methodname>; lo que es útil cuando se reenvían
|
|
@@ -287,7 +320,7 @@ if ($this->_hasParam('id') {
|
|
|
<classname>Zend_Controller_Action</classname> proporciona un
|
|
<classname>Zend_Controller_Action</classname> proporciona un
|
|
|
mecanismo rudimentario y flexible para ver la integración.
|
|
mecanismo rudimentario y flexible para ver la integración.
|
|
|
Hay dos métodos para lograrlo, <methodname>initView()</methodname> y
|
|
Hay dos métodos para lograrlo, <methodname>initView()</methodname> y
|
|
|
- <methodname>render()</methodname>; el anterior método <methodname>$view</methodname>
|
|
|
|
|
|
|
+ <methodname>render()</methodname>; el anterior método <varname>$view</varname>
|
|
|
carga la propiedad pública, y este último muestra una vista en
|
|
carga la propiedad pública, y este último muestra una vista en
|
|
|
base a la acción requerida actual, utilizando la jerarquía del
|
|
base a la acción requerida actual, utilizando la jerarquía del
|
|
|
directorio para determinar el path del script.
|
|
directorio para determinar el path del script.
|
|
@@ -301,10 +334,10 @@ if ($this->_hasParam('id') {
|
|
|
<methodname>render()</methodname> llama a <methodname>initView()</methodname>
|
|
<methodname>render()</methodname> llama a <methodname>initView()</methodname>
|
|
|
con el fin de recuperar el objeto vista, pero puede ser
|
|
con el fin de recuperar el objeto vista, pero puede ser
|
|
|
iniciada en cualquier momento; por defecto introduce
|
|
iniciada en cualquier momento; por defecto introduce
|
|
|
- información a la propiedad de <methodname>$view</methodname> con un objeto
|
|
|
|
|
|
|
+ información a la propiedad de <varname>$view</varname> con un objeto
|
|
|
<classname>Zend_View</classname>, pero se puede usar cualquier
|
|
<classname>Zend_View</classname>, pero se puede usar cualquier
|
|
|
clase que implemente <classname>Zend_View_Interface</classname>.
|
|
clase que implemente <classname>Zend_View_Interface</classname>.
|
|
|
- Si <methodname>$view</methodname> ya ha sido inicializada, simplemente
|
|
|
|
|
|
|
+ Si <varname>$view</varname> ya ha sido inicializada, simplemente
|
|
|
devuelve esa propiedad.
|
|
devuelve esa propiedad.
|
|
|
</para>
|
|
</para>
|
|
|
|
|
|
|
@@ -327,10 +360,10 @@ applicationOrModule/
|
|
|
|
|
|
|
|
<para>
|
|
<para>
|
|
|
En otras palabras, los scripts de vista se supone están en el
|
|
En otras palabras, los scripts de vista se supone están en el
|
|
|
- subdirectorio <methodname>views/scripts/</methodname>, y en el subdirectorio
|
|
|
|
|
- <methodname>views</methodname> se supone que contiene funcionalidades
|
|
|
|
|
|
|
+ subdirectorio <filename>/views/scripts/</filename>, y en el subdirectorio
|
|
|
|
|
+ <filename>/views/</filename> se supone que contiene funcionalidades
|
|
|
hermanas (ayudantes, filtros). Al determinar el nombre y el
|
|
hermanas (ayudantes, filtros). Al determinar el nombre y el
|
|
|
- path del script, el directorio <methodname>views/scripts/</methodname>
|
|
|
|
|
|
|
+ path del script, el directorio <filename>views/scripts/</filename>
|
|
|
será utilizado como el path base, con directorios nombrados
|
|
será utilizado como el path base, con directorios nombrados
|
|
|
después que los controladores individuales proporcionen una
|
|
después que los controladores individuales proporcionen una
|
|
|
jerarquía a los scripts de vista.
|
|
jerarquía a los scripts de vista.
|
|
@@ -353,18 +386,18 @@ string render(string $action = null,
|
|
|
<para>
|
|
<para>
|
|
|
<methodname>render()</methodname> suministra un script de vista.
|
|
<methodname>render()</methodname> suministra un script de vista.
|
|
|
Si no se pasan argumentos, se supone que el script requerido es
|
|
Si no se pasan argumentos, se supone que el script requerido es
|
|
|
- <methodname>[controller]/[action].phtml</methodname> (donde
|
|
|
|
|
- <methodname>.phtml</methodname> es el valor de la propiedad
|
|
|
|
|
- <methodname>$viewSuffix</methodname>).
|
|
|
|
|
|
|
+ <filename>[controller]/[action].phtml</filename> (donde
|
|
|
|
|
+ <filename>.phtml</filename> es el valor de la propiedad
|
|
|
|
|
+ <filename>$viewSuffix</filename>).
|
|
|
Pasándole un valor a <methodname>$action</methodname> suministrará esa
|
|
Pasándole un valor a <methodname>$action</methodname> suministrará esa
|
|
|
- plantilla en al subdirectorio <methodname>[controller]</methodname>. Para
|
|
|
|
|
- anular el subdirectorio <methodname>[controller]</methodname> ponga un
|
|
|
|
|
- valor verdadero en <methodname>$noController</methodname>.
|
|
|
|
|
|
|
+ plantilla en al subdirectorio <filename>/[controller]/</filename>. Para
|
|
|
|
|
+ anular el subdirectorio <filename>/[controller]/</filename> ponga un
|
|
|
|
|
+ valor <constant>TRUE</constant> en <varname>$noController</varname>.
|
|
|
Por último, las plantillas son suministradas en el objeto
|
|
Por último, las plantillas son suministradas en el objeto
|
|
|
respuesta; si desea suministrar a un determinado
|
|
respuesta; si desea suministrar a un determinado
|
|
|
<link linkend="zend.controller.response.namedsegments">
|
|
<link linkend="zend.controller.response.namedsegments">
|
|
|
named segment</link> en el objeto respuesta, pase un valor a
|
|
named segment</link> en el objeto respuesta, pase un valor a
|
|
|
- <methodname>$name</methodname>.
|
|
|
|
|
|
|
+ <varname>$name</varname>.
|
|
|
</para>
|
|
</para>
|
|
|
|
|
|
|
|
<note><para>
|
|
<note><para>
|
|
@@ -374,8 +407,8 @@ string render(string $action = null,
|
|
|
el nombre del script. Internamente, utiliza los
|
|
el nombre del script. Internamente, utiliza los
|
|
|
delimitadores de palabra y de path del despachador para
|
|
delimitadores de palabra y de path del despachador para
|
|
|
hacer esta normalización. Así, una solicitud a
|
|
hacer esta normalización. Así, una solicitud a
|
|
|
- <methodname>/foo.bar/baz-bat</methodname> suministrará el script
|
|
|
|
|
- <methodname>foo-bar/baz-bat.phtml</methodname>.
|
|
|
|
|
|
|
+ <filename>/foo.bar/baz-bat</filename> suministrará el script
|
|
|
|
|
+ <filename>foo-bar/baz-bat.phtml</filename>.
|
|
|
Si su método de acción contiene camelCasing, recuerde que
|
|
Si su método de acción contiene camelCasing, recuerde que
|
|
|
esto se traducirá en palabras separadas por '-'
|
|
esto se traducirá en palabras separadas por '-'
|
|
|
al determinar el nombre del archivo del script de vista.
|
|
al determinar el nombre del archivo del script de vista.
|
|
@@ -425,7 +458,7 @@ class MyController extends Zend_Controller_Action
|
|
|
Además de los accesadores y de los métodos de integración de vistas,
|
|
Además de los accesadores y de los métodos de integración de vistas,
|
|
|
<classname>Zend_Controller_Action</classname> tiene varios
|
|
<classname>Zend_Controller_Action</classname> tiene varios
|
|
|
métodos utilitarios para realizar tareas comunes dentro de sus
|
|
métodos utilitarios para realizar tareas comunes dentro de sus
|
|
|
- métodos de acción (o de pre-/post-despacho).
|
|
|
|
|
|
|
+ métodos de acción (o de pre- y post-dispatch).
|
|
|
</para>
|
|
</para>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
<itemizedlist>
|
|
@@ -444,8 +477,8 @@ class MyController extends Zend_Controller_Action
|
|
|
<para>
|
|
<para>
|
|
|
<methodname>_redirect($url, array $options =
|
|
<methodname>_redirect($url, array $options =
|
|
|
array())</methodname>: redireccionar a otro lugar.
|
|
array())</methodname>: redireccionar a otro lugar.
|
|
|
- Este método toma una URL y un conjunto de opciones.
|
|
|
|
|
- Por defecto, realiza una redirección HTTP 302.
|
|
|
|
|
|
|
+ Este método toma una <acronym>URL</acronym> y un conjunto de opciones.
|
|
|
|
|
+ Por defecto, realiza una redirección <acronym>HTTP</acronym> 302.
|
|
|
</para>
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
<para>
|
|
@@ -471,8 +504,8 @@ class MyController extends Zend_Controller_Action
|
|
|
<listitem>
|
|
<listitem>
|
|
|
<para>
|
|
<para>
|
|
|
<emphasis>prependBase:</emphasis> ya sea
|
|
<emphasis>prependBase:</emphasis> ya sea
|
|
|
- anteponiendo o no la base URL registrada con el
|
|
|
|
|
- objeto solicitud a la URL provista.
|
|
|
|
|
|
|
+ anteponiendo o no la base <acronym>URL</acronym> registrada con el
|
|
|
|
|
+ objeto solicitud a la <acronym>URL</acronym> provista.
|
|
|
</para>
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
<para>
|
|
@@ -484,9 +517,9 @@ class MyController extends Zend_Controller_Action
|
|
|
|
|
|
|
|
<listitem>
|
|
<listitem>
|
|
|
<para>
|
|
<para>
|
|
|
- <emphasis>code:</emphasis> qué código HTTP
|
|
|
|
|
|
|
+ <emphasis>code:</emphasis> qué código <acronym>HTTP</acronym>
|
|
|
utilizar en la redirección. Por defecto,
|
|
utilizar en la redirección. Por defecto,
|
|
|
- se utiliza un HTTP 302; se puede utilizar cualquier
|
|
|
|
|
|
|
+ se utiliza un <acronym>HTTP</acronym> 302; se puede utilizar cualquier
|
|
|
código entre 301 y 306.
|
|
código entre 301 y 306.
|
|
|
</para>
|
|
</para>
|
|
|
|
|
|