Pregunta sobre campos solo lectura en formularios

524 views
Skip to first unread message

Flako82

unread,
Sep 16, 2010, 12:45:20 PM9/16/10
to symfony-es
Buenas amigos he buscado por todos lados y no he podido entender si se
puede hacer un campo de la base de datos en solo lectura.

Lo que sucede que quiero q un campo importante que muestro en el
formulario Editar de una tabla de mi base de datos, sea solo lectura,
hay alguna forma para poner en solo lectura un campo de texto desde el
success, usando el render?

Saludos espero me puedan responder y desde ya les agradezco.

eemece2 Eduardo Martinez

unread,
Sep 17, 2010, 3:05:47 AM9/17/10
to symfo...@googlegroups.com
Una opción puede ser hacerlo en la definición del formulario, o con disabled o con readonly:

$this->widgetSchema['elcampo']->setAttribute('disabled','disable');
//(con su validator con 'required' => false)porquer creo que el valor no lo recibes de vuelta.

o si no con el atributo readonly:
'readonly'=>'readonly'

en este caso creo que tendrias que tener cuidado con la seguridad, porque es fácilmente modificable el valor del campo.

Un saludo!
Edu


--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a symfo...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a symfony-es+...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/symfony-es?hl=es.


Claudio Barra

unread,
Sep 17, 2010, 9:49:11 AM9/17/10
to symfo...@googlegroups.com
Gracias por la respuesta.

Daniel Gonzalez Cerviño

unread,
Sep 17, 2010, 9:53:16 AM9/17/10
to symfo...@googlegroups.com
2010/9/17 eemece2 Eduardo Martinez <eem...@gmail.com>:

>
> en este caso creo que tendrias que tener cuidado con la seguridad, porque es
> fácilmente modificable el valor del campo.
>

Si, para hacerlo bien, tendrías que crearte un Validator, que
compruebe que el campo no ha sido modificado.

O quizás extender el save() si te es más sencillo ...

Un saludo!
--
--------------------------------------------------------------------
Daniel González Cerviño
Open Source Developer http://freelancemadrid.es
C/ Diligencia, 9,despacho 108 - 28018 - Madrid
Tel (+34) 653 96 50 48
Mail daniel....@freelacemadrid.es
--------------------------------------------------------------------

Claudio Barra

unread,
Sep 17, 2010, 8:32:47 PM9/17/10
to symfo...@googlegroups.com
No me ha resultado nada con este tema :S...espero no ser ya molesto por preguntar tanto jaja.

Les explicaré mejor mi situación, lo que yo quiero es que en la sección editar de los mòdulos producto y servicio de mi sistema el nombre de éstos no se pueda editar, pero los otros campos si.

Quiero que este campo nombre aparezca como solo lectura, pero no me ha resultado.

Les explico lo que he hecho.

En el ServicioForm coloque esto después de señalar mis widgets y todo.

 if(!$this->isNew()):
               {
       $this->widgetSchema['nombre_servicio']->setAttributes('disabled','disabled');
               }
       endif;

Lo que pasa es que el campo de texto nobre_servicio me aparece pero en blanco sin mostrar el nombre del servicio y cuando edito los otros campos y presiono editar no guarda los cambios en la BD.

Ojalá me puedan ayudar.

Desde ya saludos y gracias.


Marcos De Andrade

unread,
Sep 17, 2010, 9:58:22 PM9/17/10
to symfo...@googlegroups.com
Te respondo de una manera rapida, yo tambien pase por la misma situacion y lo que hice fue:

Fijate en el _form del modulo debe haber un link_to(delete) hay se le pasa un getObject()-getId o algo parecido utiliza esa misma forma para mostrar el nombre que quieras cuando tu form este en edit osea cuando if(!$form->isNew()):

Echo $form->getNombre();



Espero te sirva no escribi mucho porque ando desde el cel cualquier cosa me avisas

...


From: Claudio Barra <peloteroschil...@gmail.com>
Date: Fri, 17 Sep 2010 20:32:47 -0400
Subject: Re: [symfony-es] Pregunta sobre campos solo lectura en formularios

Hatler

unread,
Sep 27, 2010, 4:34:20 PM9/27/10
to symfony-es
Pues no se mucho un sigo aprendiendo, pero intenta con esto:

if(!$this->isNew())
{
$this->widgetSchema['nombre_servicio']-

Juan Manuel

unread,
Sep 27, 2010, 4:41:45 PM9/27/10
to symfony-es
Para no editar un campo en la acción update tenés que hacer dentro de
configure() en *Form.class.php de /lib/form/doctrine

$esNuevo = $this->getObject()->isNew();

if (!$esNuevo){
$this->validatorSchema['password']->setOption('required',
false);
$this->validatorSchema['password2']->setOption('required',
false);
}

Si no es nuevo, es decir que actualizo, hago que las contraseñas no
sean requeridas y por ende no se actualicen. Cambia el ['password']
por tu campo y listo.
Similar para el setWidgets, si editas agregas o quitas campos.

Saludos.-

Claudio Barra

unread,
Sep 27, 2010, 5:42:01 PM9/27/10
to symfo...@googlegroups.com
Muchas gracias a todos, se me habia olvidado decirles que habia solucionado esto hace un buen tiempo jajaja.

Lo que hice fue poner en el render(array('readOnly'=>'readOnly')

jejeje...todo funciona muy bien...gracias a todos los que se dieron unos minutos para ayudarme.

Jos

unread,
Sep 27, 2010, 11:03:07 PM9/27/10
to symfo...@googlegroups.com
hay un problema con el readonly, mediante algún editor de html en caliente, se puede editar el campo, tienes que filtar eso eliminando el campo en tu accion antes de volver a guardar en formulario.
--
ejosvp
Reply all
Reply to author
Forward
0 new messages