Duda sobre formularios en sf 1.4

3 views
Skip to first unread message

Pablo Braulio

unread,
Aug 31, 2010, 5:01:25 AM8/31/10
to symfo...@googlegroups.com
Hola a todos.

Poni�ndome las pilas de nuevo, tengo una duda sobre el modo de trabajar
con los formularios en la versi�n 1.4 (aunque ya se que desde la 1.2 ya
se hac�a as�).

Antes de nada aclarar que hasta ahora he usado la versi�n 1.0, y esto
var�a mucho.

Como en otras versiones los formularios los puedes generar usando
doctrine:generate-admin o doctrine:generate-module. En este �ltimo caso
veo en la plantilla que el formulario lo genera con este c�digo (por
ejemplo):

<tr>
<th><?php echo $form['empresa']->renderLabel() ?></th>
<td>
<?php echo $form['empresa']->renderError() ?>
<?php echo $form['empresa'] ?>
</td>
</tr>

Mi duda es referente a las clases form alojadas en /lib/form/doctrine/

Seg�n veo en los archivos dentro de esa ruta es donde se especifica la
estructura del formulario y luego en el parcial _form.php del m�dulo se
declara un simple echo y se crea el formulario.

Pero, �cuando se usa esto?. Si al generar el m�dulo ya te crea el c�digo
en el parcial _form.php y generate-admin ya lo hace solo y se declara
todo en el archivo generator.yml, �cuando se usan estas clases para
generar formularios?.

Es una duda de novatillo, pero es que para esta versi�n lo soy.
--
Saludos cordiales.
Pablo.

Si lo reenv�as, ten la precauci�n de borrar los datos de procedencia que
encabezar�an tu reenv�o � empezando por mi direcci�n de correo
electr�nico - . Coloca siempre las direcciones de tus contactos en el
campo <CCO> para que viajen discretas, no en el campo <Para> ni en
el<CC>. De esa forma nadie que lo reciba tendr� constancia de las se�as
de los dem�s destinatarios a los que tambi�n se remite. Todo ello a fin
de evitar que nadie se aproveche de todas las direcciones que se van
acumulando al pasar de buz�n a buz�n para el lanzamiento de correo
basura y otras indeseadas lindezas. Aparte claro est� de garantizar la
privacidad.

Gracias.

magarzon

unread,
Aug 31, 2010, 5:38:03 AM8/31/10
to symfony-es
Si te fijas en el action que te crea el doctrine:generate-module, ahí
se utilizan esas clases, por ejemplo:

$this->form = new PruebaForm();

En el _form.php lo que tienes es la "vista" de este formulario que has
creado en el action, es decir, que ahí no se está creando el
formulario, si no representándolo.

Espero que te haya quedado más claro.

Un saludo,
Miguel Angel.

On 31 ago, 10:01, Pablo Braulio <brul...@gmail.com> wrote:
> Hola a todos.
>
> Poni ndome las pilas de nuevo, tengo una duda sobre el modo de trabajar
> con los formularios en la versi n 1.4 (aunque ya se que desde la 1.2 ya
> se hac a as ).
>
> Antes de nada aclarar que hasta ahora he usado la versi n 1.0, y esto
> var a mucho.
>
> Como en otras versiones los formularios los puedes generar usando
> doctrine:generate-admin o doctrine:generate-module. En este ltimo caso
> veo en la plantilla que el formulario lo genera con este c digo (por
> ejemplo):
>
> <tr>
>          <th><?php echo $form['empresa']->renderLabel() ?></th>
>          <td>
>            <?php echo $form['empresa']->renderError() ?>
>            <?php echo $form['empresa'] ?>
>          </td>
>        </tr>
>
> Mi duda es referente a las clases form alojadas en /lib/form/doctrine/
>
> Seg n veo en los archivos dentro de esa ruta es donde se especifica la
> estructura del formulario y luego en el parcial _form.php del m dulo se
> declara un simple echo y se crea el formulario.
>
> Pero, cuando se usa esto?. Si al generar el m dulo ya te crea el c digo
> en el parcial _form.php y generate-admin ya lo hace solo y se declara
> todo en el archivo generator.yml, cuando se usan estas clases para
> generar formularios?.
>
> Es una duda de novatillo, pero es que para esta versi n lo soy.
> --
> Saludos cordiales.
> Pablo.
>
> Si lo reenv as, ten la precauci n de borrar los datos de procedencia que
> encabezar an tu reenv o empezando por mi direcci n de correo
> electr nico - . Coloca siempre las direcciones de tus contactos en el
> campo <CCO> para que viajen discretas, no en el campo <Para> ni en
> el<CC>. De esa forma nadie que lo reciba tendr constancia de las se as
> de los dem s destinatarios a los que tambi n se remite. Todo ello a fin
> de evitar que nadie se aproveche de todas las direcciones que se van
> acumulando al pasar de buz n a buz n para el lanzamiento de correo
> basura y otras indeseadas lindezas. Aparte claro est de garantizar la
> privacidad.
>
> Gracias.

chus

unread,
Aug 31, 2010, 5:50:21 AM8/31/10
to symfony-es
en la clase es donde realmente se define el formulario, cuando en tu
accion defines

$form = new xxxxform();

te estas refiriendo a la clase del form.
si te fijas en el metodo configure() estan los widgets y los
validadores, asi que una vez envias el form, también pasa por la clase
para validar que el form es correcto cuando haces el ->bin()

Pablo Braulio

unread,
Aug 31, 2010, 6:09:21 AM8/31/10
to symfo...@googlegroups.com
A ver si lo pillo.

En el action tengo:

public function executeNew(sfWebRequest $request)
{
$this->form = new Public_Empleados_ItemForm();
}

Y en Public_Empleados_ItemForm.class.php:

class Public_Empleados_ItemForm extends BasePublic_Empleados_ItemForm
{
public function configure()
{
$this->setWidgets(array(
'nombre'=> new sfWidgetFormInputText(),
'apellidos' => new sfWidgetFormInputText(),
'dni'=> new sfWidgetFormInputText(),
));

$this->setValidators(array(
'dni'=> new sfValidatorString(array('max_lenght' => 9,
'min_lenght' => 9))
));
}
}

Ahora, en el parcial _form.php, �debo borrar todo el contenido y poner
<?php echo $form ?> ?.

Es que no salen s�lo esos campos.

On 31/08/10 11:50, chus wrote:
> en la clase es donde realmente se define el formulario, cuando en tu
> accion defines
>
> $form = new xxxxform();
>
> te estas refiriendo a la clase del form.
> si te fijas en el metodo configure() estan los widgets y los

> validadores, asi que una vez envias el form, tambi�n pasa por la clase


> para validar que el form es correcto cuando haces el ->bin()
>

chus

unread,
Aug 31, 2010, 6:24:58 AM8/31/10
to symfony-es
si pones <?php echo $form ?>
te deben de aparecer todos los campos que tienes definidios en
widgets,
pero tambien los puedes mostrar asi:

<?php echo $form['nombre']->render() ?> etc etc...

pero yo prefiero la primera opcion, es mas comoda...

Pablo Braulio

unread,
Aug 31, 2010, 6:27:53 AM8/31/10
to symfo...@googlegroups.com
Pues me aparecen todos los que ya hab�an, pero desordenados. Eso es
normal, pues no lo he puesto en una tabla y dem�s.

Javier Garcia

unread,
Sep 1, 2010, 7:12:46 AM9/1/10
to symfo...@googlegroups.com
Para ordenarlos usa useFields()

On 08/31/2010 12:27 PM, Pablo Braulio wrote:
> Pues me aparecen todos los que ya hab�an, pero desordenados. Eso es
> normal, pues no lo he puesto en una tabla y dem�s.
>
>
> On 31/08/10 12:24, chus wrote:
>> si pones<?php echo $form ?>
>> te deben de aparecer todos los campos que tienes definidios en
>> widgets,
>> pero tambien los puedes mostrar asi:
>>
>> <?php echo $form['nombre']->render() ?> etc etc...
>>
>> pero yo prefiero la primera opcion, es mas comoda...
>>
>
>


--
Javi

Ubuntu 8.04

Pablo Braulio

unread,
Sep 1, 2010, 7:32:49 AM9/1/10
to symfo...@googlegroups.com
Veo que hay c�digo, que puede servir de referencia en los formularios
Base...class.php

�Se puede modificar el c�digo de estos archivos?, o mejor dicho, �ser�a
conveniente o correcto hacerlo?.

magarzon

unread,
Sep 2, 2010, 10:51:20 AM9/2/10
to symfony-es
Las clases Base es mejor no tocarlas, pues doctrine las machaca cada
vez que haces un build-all o similar.

Para ello están las subclases que también te crean (y que al final son
las que usas al hacer un new del formulario por ejemplo).

Por tanto, cualquier cosa que quieras hacer, hazlo en la subclase, no
en la base. Si es necesario, sobreescribe el método que sea, haces tus
cosas y luego (o antes) llama al método de la clase padre.

On 1 sep, 12:32, Pablo Braulio <brul...@gmail.com> wrote:
> Veo que hay c digo, que puede servir de referencia en los formularios
> Base...class.php
>
> Se puede modificar el c digo de estos archivos?, o mejor dicho, ser a
> conveniente o correcto hacerlo?.
>
> --
> Saludos cordiales.
> Pablo.
>
> Si lo reenv as, ten la precauci n de borrar los datos de procedencia que
> encabezar an tu reenv o empezando por mi direcci n de correo
> electr nico - . Coloca siempre las direcciones de tus contactos en el
> campo <CCO> para que viajen discretas, no en el campo <Para> ni en
> el<CC>. De esa forma nadie que lo reciba tendr constancia de las se as
> de los dem s destinatarios a los que tambi n se remite. Todo ello a fin
> de evitar que nadie se aproveche de todas las direcciones que se van
> acumulando al pasar de buz n a buz n para el lanzamiento de correo
> basura y otras indeseadas lindezas. Aparte claro est de garantizar la
> privacidad.
>
> Gracias.
Reply all
Reply to author
Forward
0 new messages