Author: jaimesuez
Date: 2010-04-14 18:31:48 +0200 (Wed, 14 Apr 2010)
New Revision: 29150
Added:
plugins/sfDoctrineAjaxFormPlugin/lib/sfDoctrineAjaxFormPluginHelper.class.php
Modified:
plugins/sfDoctrineAjaxFormPlugin/modules/ajax_form/actions/actions.class.php
Log:
metiendo a helper para sacar cosas del baseform
Added:
plugins/sfDoctrineAjaxFormPlugin/lib/sfDoctrineAjaxFormPluginHelper.class.php
===================================================================
---
plugins/sfDoctrineAjaxFormPlugin/lib/sfDoctrineAjaxFormPluginHelper.class.php
(rev 0)
+++
plugins/sfDoctrineAjaxFormPlugin/lib/sfDoctrineAjaxFormPluginHelper.class.php
2010-04-14 16:31:48 UTC (rev 29150)
@@ -0,0 +1,115 @@
+<?php
+
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+*/
+/**
+ * Description of sfDoctrineAjaxFormPluginHelperclass
+ *
+ * @author jaimejaime
+ */
+class sfDoctrineAjaxFormPluginHelper
+{
+
+################################ FUNCIONES PARA EMBEDD FORMS DINAMICOS
########################################
+ static public function configureDinamicEmbeddedForms( & $form)
+ {
+ //obtenemos los "widget_name" de todos los dinamic embedded forms
+ $widget_names_dinamic_embedded_forms =
$form->getOption('widget_names_dinamic_embedded_forms');
+
+ //recorremos los formularios
+ foreach ($widget_names_dinamic_embedded_forms as $widget_name)
+ {
+ //datos que vamos a utilizar
+ $form_class =
module_to_form($form->getWidget($widget_name)->getOption('widget_model'));
+ $embedded_name =
$form->getWidget($widget_name)->getOption('embedded_name');
+ $unset = $form->getWidget($widget_name)->getOption('unset');
+ $foreign_type =
$form->getWidget($widget_name)->getOption('foreign_type');
+ $foreign_alias =
$form->getWidget($widget_name)->getOption('foreign_alias');
+ $module_relation =
$form->getWidget($widget_name)->getOption('module_relation');
+ $form_module_relation =
$form->getWidget($widget_name)->getOption('form_module_relation');
+
+ //Un formulario vacio hara de contenedor para todas los embedded forms
+ $objects_container_form = new sfForm();
+ $count = 0;
+
+ //consultamos los objetos existentes
+ if ($foreign_type == 'ONE-one' || $foreign_type == 'ONE-ONE')
+ {
+ $object = $form->getObject()->$form_module_relation;
+ if ($object->id > 0)
+ {
+ $object_form = new $form_class($object);
+ $object_form->unsetFields($unset);
+ $objects_container_form->embedForm($count++, $object_form);
+ }
+ }
+ elseif($foreign_type == "many-many" || $foreign_type == "one-MANY")
+ {
+ $objects = $form->getObject()->$foreign_alias;
+
+ //Embebemos los objetos existentes
+ foreach ($objects as $object)
+ {
+ $object_form = new $form_class($object);
+ $object_form->unsetFields($unset);
+ $objects_container_form->embedForm($count++, $object_form);
+ }
+ }
+
+ $form->embedForm($embedded_name, $objects_container_form);
+ }
+ }
+
+ public static function embedFormDinamic( & $form, $widget_name, $num,
$id_related_object, $taintedValues = null)
+ {
+ $foreign_type = $form->getWidget($widget_name)->getOption('foreign_type');
+ $foreign_alias =
$form->getWidget($widget_name)->getOption('foreign_alias');
+ $embedded_name =
$form->getWidget($widget_name)->getOption('embedded_name');
+ $unset = $form->getWidget($widget_name)->getOption('unset');
+ $widget_model =
module_to_class($form->getWidget($widget_name)->getOption('widget_model'));
+ $widget_form = class_to_form($widget_model);
+ $set_module_relation = 'set' .
$form->getWidget($widget_name)->getOption('module_relation'); //setConyuge x ej
+ $form_module_relation =
$form->getWidget($widget_name)->getOption('form_module_relation'); //Conyuge x
ej
+ $set_form_module_relation = 'set' . $form_module_relation; //setConyuge x
ej
+
+ $related_object = $id_related_object > 0 ?
Doctrine::getTable($widget_model)->find($id_related_object) : new
$widget_model();
+
+ //la foreign key esta en el objeto contenedor , x ej feligres
+ if ($foreign_type == 'ONE-one')
+ {
+ $form->getObject()->$set_form_module_relation($related_object);
+ }
+
+ //la clave foranea esta en los dos objetos
+ elseif ($foreign_type == 'ONE-ONE')
+ {
+ $form->getObject()->$set_form_module_relation($related_object);
+// $related_object->$set_module_relation($form->getObject()); #NO
FUNCIONA QUE SE SETEE LA CLAVE FORANEA AL EMBEDDED OBJECT
+ }
+
+ //se usa tabla de referencia
+ elseif ($foreign_type == "many-many")
+ {
+ $reference_object = $form->getObject()->$foreign_alias; //por ej
Padrinos
+ $reference_object[count($reference_object)] = $related_object;
+ }
+
+ //la clave foranea esta en el objeto embebido, x ej hijo (one-many)
+ else
+ {
+ $related_object->$set_module_relation($form->getObject());
+ }
+
+ //unseteamos los campos
+ $object_form = new $widget_form($related_object);
+ $object_form->unsetFields($unset);
+
+ //Empotramos el nuevo objeto en el contenedor
+ $form->getEmbeddedForm($embedded_name)->embedForm($num, $object_form);
+
+ //Volvemos a empotrar el contenedor
+ $form->embedForm($embedded_name, $form->getEmbeddedForm($embedded_name));
+ }
+}
Modified:
plugins/sfDoctrineAjaxFormPlugin/modules/ajax_form/actions/actions.class.php
===================================================================
---
plugins/sfDoctrineAjaxFormPlugin/modules/ajax_form/actions/actions.class.php
2010-04-14 16:09:57 UTC (rev 29149)
+++
plugins/sfDoctrineAjaxFormPlugin/modules/ajax_form/actions/actions.class.php
2010-04-14 16:31:48 UTC (rev 29150)
@@ -115,8 +115,9 @@
$form = new $module_form(null);
}
- $form->embedFormDinamic($widget_name, $number, $id_related_object);
+ sfDoctrineAjaxFormPluginHelper::embedFormDinamic($form, $widget_name,
$number, $id_related_object);
+
return $this->renderPartial('ajax_form/add_embedded_form',array(
'form' => $form,
'widget_name' => $widget_name,
--
You received this message because you are subscribed to the Google Groups
"symfony SVN" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/symfony-svn?hl=en.