jrh
unread,Sep 2, 2010, 9:53:46 AM9/2/10Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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.