Foros del Web » Programando para Internet » PHP » Zend »

[Zend] setElementDecorators Errors

Estas en el tema de [Zend] setElementDecorators Errors en el foro de Zend en Foros del Web. Hola, quisiera saber como puedo envolver los "Errors" con un span o div, la idea es poder usar un tooltip con javascrip pero para eso ...
  #1 (permalink)  
Antiguo 06/03/2011, 23:47
 
Fecha de Ingreso: febrero-2010
Mensajes: 183
Antigüedad: 14 años, 10 meses
Puntos: 1
[Zend] setElementDecorators Errors

Hola, quisiera saber como puedo envolver los "Errors" con un span o div, la idea es poder usar un tooltip con javascrip pero para eso necesito envolverlos.
Actualmente tengo seteado el form de la siguiente manera:
Código PHP:
        $form->clearDecorators()
            ->
addDecorator('FormElements')
            ->
addDecorator('HtmlTag', array('tag' => 'table'))
            ->
addDecorator('Form')
            ->
setElementDecorators(array(
                array(
'ViewHelper'),
                array(
'Errors', array('class' => 'qtip')),
                array(
'Description', array('tag' => 'span''class' => 'qtip')),
                array(
'Label', array(
                    
'placement' => 'append'
                    
'separator' => '<br />'
                
)),
                array(
'HtmlTag', array('tag' => 'td'))
        ));
        
$form->getElement('login')->removeDecorator('Label'); 
  #2 (permalink)  
Antiguo 07/03/2011, 04:58
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: [Zend] setElementDecorators Errors

Deberias leer primero un poco de teoria sobre los decorators, te dejo un link, ahora en la practica deberia ser algo asi:

Código PHP:
Ver original
  1. ...
  2. ->setElementDecorators(array(
  3.                 array('Errors', array('class' => 'qtip')),
  4.                 array('HtmlTag', array('tag' => 'div', 'class' => 'error-wrapper')),   
  5.                 array('ViewHelper', array('placement' => 'prepend')),
  6.                 array('Description', array('tag' => 'span', 'class' => 'qtip')),
  7.                 array('Label', array(
  8.                     'placement' => 'append',
  9.                     'separator' => '<br />'
  10.                 )),
  11.                 array('HtmlTag', array('tag' => 'td'))
  12. ...

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 07/03/2011, 15:31
 
Fecha de Ingreso: febrero-2010
Mensajes: 183
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: [Zend] setElementDecorators Errors

Cita:
Iniciado por masterpuppet Ver Mensaje
Deberias leer primero un poco de teoria sobre los decorators, te dejo un link, ahora en la practica deberia ser algo asi:

Código PHP:
Ver original
  1. ...
  2. ->setElementDecorators(array(
  3.                 array('Errors', array('class' => 'qtip')),
  4.                 array('HtmlTag', array('tag' => 'div', 'class' => 'error-wrapper')),   
  5.                 array('ViewHelper', array('placement' => 'prepend')),
  6.                 array('Description', array('tag' => 'span', 'class' => 'qtip')),
  7.                 array('Label', array(
  8.                     'placement' => 'append',
  9.                     'separator' => '<br />'
  10.                 )),
  11.                 array('HtmlTag', array('tag' => 'td'))
  12. ...

Saludos.
Gracias masterpuppet porque creo que terminé de entender como funciona setElementDecorators().
  #4 (permalink)  
Antiguo 08/03/2011, 19:52
 
Fecha de Ingreso: febrero-2010
Mensajes: 183
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: [Zend] setElementDecorators Errors

Cita:
Iniciado por masterpuppet Ver Mensaje
Deberias leer primero un poco de teoria sobre los decorators, te dejo un link, ahora en la practica deberia ser algo asi:

Código PHP:
Ver original
  1. ...
  2. ->setElementDecorators(array(
  3.                 array('Errors', array('class' => 'qtip')),
  4.                 array('HtmlTag', array('tag' => 'div', 'class' => 'error-wrapper')),   
  5.                 array('ViewHelper', array('placement' => 'prepend')),
  6.                 array('Description', array('tag' => 'span', 'class' => 'qtip')),
  7.                 array('Label', array(
  8.                     'placement' => 'append',
  9.                     'separator' => '<br />'
  10.                 )),
  11.                 array('HtmlTag', array('tag' => 'td'))
  12. ...

Saludos.
Hola, te voy a hacer una corrección porque no me andaba y bueno leyendo un poco encontré que hay que asignarle un alias al "HtmlTag", porque sino se pisan y queda uno solo.
Osea resultado final:
Código PHP:
->setElementDecorators(array(
                array(
'Errors', array('class' => 'qtip')),
                array(array(
'HtmlTag_2' => 'HtmlTag'), array('tag' => 'div''class' => 'error-wrapper')),    
                array(
'ViewHelper', array('placement' => 'prepend')),
                array(
'Description', array('tag' => 'span''class' => 'qtip')),
                array(
'Label', array(
                    
'placement' => 'append'
                    
'separator' => '<br />'
                
)),
                array(
'HtmlTag', array('tag' => 'td')) 
Bueno de esta manera funciona perfecto, pero para mi diseño sigue habiendo un problema, vos me cambiaste el orden del ViewHelper y a mi no me sirve. Entonces lo que hice es ponerlo en el orden que tenía y lo que pasó es que no sólo me envolvía 'Errors' sino que también el 'ViewHelper'.
Luego encontre una solución a este problema, y es que se puede decidir cuando abrir y cuando cerrar los tags, en teoría todo bárbaro pero cuando lo llevé a la practica no me funcionó.
El código me quedó así pero no puedo lograr que se cierre el tag antes del 'ViewHelper':
Código PHP:
            ->setElementDecorators(array(
                array(
'ViewHelper', array('tag' => 'span''class' => 'qtip')),
                array(array(
'HtmlTag_2' => 'HtmlTag'), array('tag' => 'div''closeOnly' => true)),
                array(
'Errors'),
                array(array(
'HtmlTag_2' => 'HtmlTag'), array('tag' => 'div''openOnly' => true)),
                array(
'Description', array('tag' => 'span''class' => 'qtip')),
                array(
'Label', array(
                    
'placement' => 'append'
                    
'separator' => '<br />'
                
)),
                array(
'HtmlTag', array('tag' => 'td')) 
  #5 (permalink)  
Antiguo 09/03/2011, 02:38
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: [Zend] setElementDecorators Errors

Que estructura queres lograr ?, podes postear el html al que queres llegar ?, veo demasiado markup para un formulario, table, tr, td, span, div, br, tanto precisas ?, si es tan complejo el form, talvés el decorator ViewScript sea mejor solución.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 09/03/2011, 09:36
 
Fecha de Ingreso: febrero-2010
Mensajes: 183
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: [Zend] setElementDecorators Errors

Cita:
Iniciado por masterpuppet Ver Mensaje
Que estructura queres lograr ?, podes postear el html al que queres llegar ?, veo demasiado markup para un formulario, table, tr, td, span, div, br, tanto precisas ?, si es tan complejo el form, talvés el decorator ViewScript sea mejor solución.
No no, tenés razón esta medio confuso al pedo porque en realidad sería así:
Código PHP:
            ->setElementDecorators(array(
                array(
'ViewHelper'),
                array(
'Errors'),
                array(array(
'HtmlTag_2' => 'HtmlTag'), array('tag' => 'div''class' => 'gtip-html hidden')),
                array(
'Description', array('tag' => 'p')),
                array(
'Label', array(
                    
'class' => 'qtip',
                    
'placement' => 'append'
                    
'separator' => '<br />'
                
)),
                array(
'HtmlTag', array('tag' => 'td')) 
El resultado que espero es el siguiente:
Código:
<table>
	<tr>
		<td>
			<input type="text" value="" id="user" name="user" class="ui-corner-all ui-widget-content" gtbfieldid="40"><br />
			<label class="qtip required" for="user">Label</label>
			<div class="gtip-html hidden">
				<ul class="errors">
					<li>Value is required and can't be empty</li>
				</ul>
			</div>
			<p class="hint">esto es una descripción</p>
		</td>
	</tr>
</table>
Desde ya muchas gracias.
  #7 (permalink)  
Antiguo 09/03/2011, 11:59
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: [Zend] setElementDecorators Errors

El label va despues del input ?, te dejo los dos casos, por si acaso,

input-label-error-hint
Código PHP:
Ver original
  1. $this->clearDecorators()
  2.      ->addDecorator('FormElements')
  3.      ->addDecorator('HtmlTag', array('tag' => 'table'))
  4.      ->addDecorator('Form')
  5.      ->setElementDecorators(array(
  6.         array('Errors', array('class' => 'qtip')),
  7.         array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div', 'class' => 'error-wrapper')),
  8.         array('Label', array(
  9.             'class' => 'qtip',
  10.             'separator' => '<br />'                    
  11.         )),    
  12.         array('ViewHelper', array('placement' => 'prepend')),
  13.         array('Description', array('tag' => 'p')),                
  14.         array('HtmlTag', array('tag' => 'td'))                  
  15. ));

label-input-error-hint
Código PHP:
Ver original
  1. $this->clearDecorators()
  2.      ->addDecorator('FormElements')
  3.      ->addDecorator('HtmlTag', array('tag' => 'table'))
  4.      ->addDecorator('Form')
  5.      ->setElementDecorators(array(
  6.         array('Errors', array('class' => 'qtip')),
  7.         array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div', 'class' => 'error-wrapper')),    
  8.         array('ViewHelper', array('placement' => 'prepend')),
  9.         array('Description', array('tag' => 'p')),
  10.         array('Label', array(
  11.             'class' => 'qtip',  
  12.             'separator' => '<br />'                    
  13.         )),
  14.         array('HtmlTag', array('tag' => 'td'))                  
  15. ));

Y te hago un par de comentarios:
  1. No deberías utilizar tablas para crear un layout.
  2. No utilices BR, se puede lograr lo mismo por css.

te dejo un link a lo que suelo utilizar para maquetar OOCSS(si, objetos hasta en la sopa )

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #8 (permalink)  
Antiguo 09/03/2011, 15:46
 
Fecha de Ingreso: febrero-2010
Mensajes: 183
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: [Zend] setElementDecorators Errors

Cita:
Iniciado por masterpuppet Ver Mensaje
El label va despues del input ?, te dejo los dos casos, por si acaso,

input-label-error-hint
Código PHP:
Ver original
  1. $this->clearDecorators()
  2.      ->addDecorator('FormElements')
  3.      ->addDecorator('HtmlTag', array('tag' => 'table'))
  4.      ->addDecorator('Form')
  5.      ->setElementDecorators(array(
  6.         array('Errors', array('class' => 'qtip')),
  7.         array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div', 'class' => 'error-wrapper')),
  8.         array('Label', array(
  9.             'class' => 'qtip',
  10.             'separator' => '<br />'                    
  11.         )),    
  12.         array('ViewHelper', array('placement' => 'prepend')),
  13.         array('Description', array('tag' => 'p')),                
  14.         array('HtmlTag', array('tag' => 'td'))                  
  15. ));

label-input-error-hint
Código PHP:
Ver original
  1. $this->clearDecorators()
  2.      ->addDecorator('FormElements')
  3.      ->addDecorator('HtmlTag', array('tag' => 'table'))
  4.      ->addDecorator('Form')
  5.      ->setElementDecorators(array(
  6.         array('Errors', array('class' => 'qtip')),
  7.         array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div', 'class' => 'error-wrapper')),    
  8.         array('ViewHelper', array('placement' => 'prepend')),
  9.         array('Description', array('tag' => 'p')),
  10.         array('Label', array(
  11.             'class' => 'qtip',  
  12.             'separator' => '<br />'                    
  13.         )),
  14.         array('HtmlTag', array('tag' => 'td'))                  
  15. ));

Y te hago un par de comentarios:
  1. No deberías utilizar tablas para crear un layout.
  2. No utilices BR, se puede lograr lo mismo por css.

te dejo un link a lo que suelo utilizar para maquetar OOCSS(si, objetos hasta en la sopa )

Saludos.
Hola muchas gracias por la respuesta, pero no funciona en cualuiera de los dos casos "Errors" siempre es renderizado anterior a 'ViewHelper'. Voy a intentar con decorator ViewScript.

Te ago una pregunta respecto a tu par de comentarios, yo uso 960 grid, esto es compatible con el OOCSS?
Y tambien quisiera que me expliques si no es mucha molestia porque no debo usar tablas en el layout.

GRACIAS!
  #9 (permalink)  
Antiguo 09/03/2011, 16:06
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: [Zend] setElementDecorators Errors

No puede ser, yo los veo bien a ambos, por eso primero va errors y luego viewhelper en prepend, a mi me genera esta estructura:

input-label-error-hint
Código HTML:
Ver original
  1. <td>
  2.     <input type="text" class="required" value="" id="username" name="username">
  3.     <label class="qtip required" for="username">Username</label>
  4.     <div class="error-wrapper">
  5.         <ul class="qtip"><li>Value is required and can't be empty</li></ul>
  6.     </div>
  7.     <p class="hint">Descripcion de username.</p>
  8. </td>

label-input-error-hint
Código HTML:
Ver original
  1. <td>
  2.    <label class="qtip required" for="username">Username</label>
  3.    <input type="text" class="required" value="" id="username" name="username">
  4.    <div class="error-wrapper">
  5.        <ul class="qtip"><li>Value is required and can't be empty</li></ul>
  6.    </div>
  7.     <p class="hint">Descripcion de username.</p>
  8. </td>

lo estas usando tal cual ?, respetando el orden de los decorators ?.

Con respecto a tus preguntas, 960gs esta bien, lo que no entiendo es para que tanto markup y tablas si estas con un FW CSS, con respecto a las tablas, no es semanticamente correcto utilizar tablas para generar un layout, las tablas son para representar datos tabulados, si googleas vas a encontrar mucha info sobre el tema.
__________________
http://es.phptherightway.com/
thats us riders :)
  #10 (permalink)  
Antiguo 09/03/2011, 16:19
 
Fecha de Ingreso: febrero-2010
Mensajes: 183
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: [Zend] setElementDecorators Errors

Cita:
Iniciado por masterpuppet Ver Mensaje
No puede ser, yo los veo bien a ambos, por eso primero va errors y luego viewhelper en prepend, a mi me genera esta estructura:

input-label-error-hint
Código HTML:
Ver original
  1. <td>
  2.     <input type="text" class="required" value="" id="username" name="username">
  3.     <label class="qtip required" for="username">Username</label>
  4.     <div class="error-wrapper">
  5.         <ul class="qtip"><li>Value is required and can't be empty</li></ul>
  6.     </div>
  7.     <p class="hint">Descripcion de username.</p>
  8. </td>

label-input-error-hint
Código HTML:
Ver original
  1. <td>
  2.    <label class="qtip required" for="username">Username</label>
  3.    <input type="text" class="required" value="" id="username" name="username">
  4.    <div class="error-wrapper">
  5.        <ul class="qtip"><li>Value is required and can't be empty</li></ul>
  6.    </div>
  7.     <p class="hint">Descripcion de username.</p>
  8. </td>

lo estas usando tal cual ?, respetando el orden de los decorators ?.

Con respecto a tus preguntas, 960gs esta bien, lo que no entiendo es para que tanto markup y tablas si estas con un FW CSS, con respecto a las tablas, no es semanticamente correcto utilizar tablas para generar un layout, las tablas son para representar datos tabulados, si googleas vas a encontrar mucha info sobre el tema.
Tenés razón amigo, yo fui el salame que se comió una parte del código, me comí esto "array('placement' => 'prepend')" en el 'ViewHelper'. De este modo si funciona.
Voy a seguir tus consejos sobre no tablas en el layout. Y agradesco mucho tu amabilidad y paciencia.

MUCHAS GRACIAS.

Etiquetas: frameworks-y-php-orientado-a-objetos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:16.