Contruccion de formularios + Acordeon JqueryUI

187 views
Skip to first unread message

Roberto Moreno P.

unread,
Sep 1, 2010, 12:46:44 PM9/1/10
to symfo...@googlegroups.com
Estimados,

Utilizo Symfony 1.4 - doctrine y genere un formulario por defecto,
ahora lo que necesito hacer es modularizarlo en "subformularios" para
que funcione con el acordeon jqueryUI ¿alguna propuesta de como hacer
la implementación?

Saludos

Juan Manuel

unread,
Sep 1, 2010, 1:13:59 PM9/1/10
to symfony-es
Modifica la vista de tu formulario de tal criterio que quede dentro de
cada sector del Acordeón y listo.
Por defecto, Symfony genera los forms usando tables.

Saludos.

Roberto Moreno P.

unread,
Sep 1, 2010, 2:39:33 PM9/1/10
to symfo...@googlegroups.com
Estaba probando lo siguiente

<div>
<h3><a href="#">Datos A</a></h3>
<div>
<table width="600px">
<tr>
<th>Nombre:</th>
<td><?php echo $form['nombre'] ?></td>
<th>Segundo Nombre:</th>
<td><?php echo $form['nombre2'] ?></td>
</tr>
<tr>
<th>Apellido Paterno:</th>
<td><?php echo $form['apellidopaterno'] ?></td>
<th>Apellido Materno:</th>
<td><?php echo $form['apellidomaterno'] ?></td>
</tr>
</table>
</div>
</div>
<div>
<h3><a href="#">Datos B</a></h3>
<div>
<table width="600px">
<tr>
<th>Telefono Fijo:</th>
<td><?php echo $form['rut'] ?></td>
<th>Celular:</th>
<td><?php echo $form['celular'] ?></td>
</tr>
<tr>
<th>Nacionalidad:</th>
<td><?php echo $form['nacionalidad'] ?></td>
<th>Fecha de Nacimiento:</th>
<td><?php echo $form['fechanacimiento'] ?></td>
</tr>
<tr colspan="2">
<th>Dirección:</th>
<td><?php echo $form['direccion'] ?></td>
</tr>
<tr>
<th>Comuna:</th>
<td><?php echo $form['comuna'] ?></td>
<th>E-Mail:</th>
<td><?php echo $form['email'] ?></td>
</tr>
</table>
</div>
</div>

Pero el formulario no me manifesta respuesta.

Saludos

> --
> 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.
>
>

Juan Manuel

unread,
Sep 1, 2010, 4:26:25 PM9/1/10
to symfony-es
Raro, debería de funcionarte a la perfección.
Que problema es el que surge? No funciona el acordeón o no muestra
nada del formulario?

Roberto Moreno P.

unread,
Sep 1, 2010, 6:42:42 PM9/1/10
to symfo...@googlegroups.com
Muestra el formulario, pero no procesa la consulta.

Saludos

Juan Manuel

unread,
Sep 1, 2010, 6:48:36 PM9/1/10
to symfony-es
Podés pegar el código completo de tu vista en algún sitio como
pastebin y pasarme el link, así veo que puede ser.

jrh

unread,
Sep 2, 2010, 9:53:46 AM9/2/10
to symfony-es
Hola, te mando paso a paso algo en lo que he trabajado en conjunto con
un amigo, pero en vez de acordeon es con tabs, quizá los tabs sean
mejores desde el punto de vista de la usabilidad, de todos modos te
puede servir de base.

1. Crear un tema propio creando en el directorio "data" del proyecto
los siguientes directorios anidados: generator/sfPropelModule
2. Copiar dentro del directorio generator el directorio "plugins/
sfPropelPlugin/data/generator/sfPropelModule/admin/" que está en el
núcleo del framework
3. Cambiar el nombre del directorio "admin" por otro, ejemplo: myadmin
4. Instalar los plugins siguientes: sfJSLibManagerPlugin-1.0.3,
sfJSLibJQueryUIPlugin-1.7.2.4, sfJqueryReloadedPlugin-1.4.3 (basta con
descomprimirlos y copiar su contenido para el directorio plugins del
proyecto)
5. En el fichero config/ProjectConfiguration.class.php dentro del
proyecto habilitar los plugins anteriores:

$this->enablePlugins('sfJqueryReloadedPlugin');
$this->enablePlugins('sfJSLibJQueryUIPlugin');
$this->enablePlugins('sfJSLibManagerPlugin');

6. Ejecutar la tarea plugin:publish
7. Modificar el fichero /plugins/sfJSLibJQueryUIPlugin/config/
settings.yml dentro del proyecto tal como sigue:

all:
.settings:
js_lib_jquery_ui:
#dependencies: jquery
web_dir: /sfJSLibJQueryUIPlugin
js_files: jquery-ui-1.7.2.custom.min.js
css_files: [jquery-ui-1.7.2.custom.css, ../../css/custom.css]


8. En el fichero layout.php del template de la app creada añadir las
líneas:

<?php use_helper('jQuery');?>
<?php sfJSLibManager::addLib('jquery_ui'); ?>

antes de:

<?php include_stylesheets() ?>
<?php include_javascripts() ?>

9. Sustituir el contenido del fichero _form.php por el siguiente:

[?php include_stylesheets_for_form($form) ?]
[?php include_javascripts_for_form($form) ?]

<div class="sf_admin_form">
[?php echo form_tag_for($form, '@<?php echo $this-
>params['route_prefix'] ?>') ?]
[?php echo $form->renderHiddenFields() ?]

[?php if ($form->hasGlobalErrors()): ?]
[?php echo $form->renderGlobalErrors() ?]
[?php endif; ?]

<div id="tabs">
<ul>

[?php foreach ($configuration->getFormFields($form, $form-
>isNew() ? 'new' : 'edit') as $fieldset => $fields): ?]
<li><a href="[?php echo "#".str_replace(" ", "_",
$fieldset); ?]">[?php echo __($fieldset, array(), 'messages') ?]</a></
li>
[?php endforeach; ?]
</ul>

[?php foreach ($configuration->getFormFields($form, $form-
>isNew() ? 'new' : 'edit') as $fieldset => $fields): ?]
[?php include_partial('<?php echo $this->getModuleName() ?
>/form_fieldset', array('<?php echo $this->getSingularName() ?>' => $<?
php echo $this->getSingularName() ?>, 'form' => $form, 'fields' =>
$fields, 'fieldset' => $fieldset)) ?]
[?php endforeach; ?]
</div>

[?php include_partial('<?php echo $this->getModuleName() ?>/
form_actions', array('<?php echo $this->getSingularName() ?>' => $<?
php echo $this->getSingularName() ?>, 'form' => $form, 'configuration'
=> $configuration, 'helper' => $helper)) ?]
</form>
</div>

[?php use_helper('jQuery');?]
[?php sfJSLibManager::addLib('jquery_ui'); ?]

[?php
echo jq_javascript_tag
("
jQuery().ready(function()
{
$('#tabs').tabs({});
});
");
?]

10. Sustituir el contenido del fichero _form_fieldset.php por el
siguiente:

<div id="[?php echo str_replace(" ", "_",$fieldset) ?]">

[?php foreach ($fields as $name => $field): ?]
[?php if ((isset($form[$name]) && $form[$name]->isHidden()) || (!
isset($form[$name]) && $field->isReal())) continue ?]
[?php include_partial('<?php echo $this->getModuleName() ?>/
form_field', array(
'name' => $name,
'attributes' => $field->getConfig('attributes', array()),
'label' => $field->getConfig('label'),
'help' => $field->getConfig('help'),
'form' => $form,
'field' => $field,
'class' => 'sf_admin_form_row sf_admin_'.strtolower($field-
>getType()).' sf_admin_form_field_'.$name,
)) ?]
[?php endforeach; ?]
</div>

11. Ejecutar la tarea symfony cc

12. Para cada módulo que se genere en el generator.yml sustituir el
tema admin por el creado y
en la parte de los formularios definir la propiedad display y las
secciones que va a tener el formulario. Si solo tiene
una sección aun así definir el display y una sección con todos los
campos.

Saludos, José R.

jrh

unread,
Sep 2, 2010, 9:56:48 AM9/2/10
to symfony-es
Lo anterior es para aplicarlo con módulos generados con el admin, de
todos modos ahí está la idea.

Saludos, José R.
Reply all
Reply to author
Forward
0 new messages