Ejemplo:
si tenemos un campo de referencia en una tabla que no cumple con el nombre estandar ej. direccion_id y por el contrario tenemos algo como receptor_direccion_id
los combos dependientes no funcionan.. al menos no a mi... hay q hacer 3 sencillos pasos...
1.- debes modificar 2 cosas proy/plugins/sfDependentSelectPlugin/sfWidgetFormDependentSelect.class
// en la funcion configure agregar una nueva opcion widget
protected function configure($options = array(), $attributes = array()) { $this->addOption('depends', ''); $this->addOption('widget', '');//nueva opcion widget $this->addOption('add_empty', true); // ajax $this->addOption('ajax', false); $this->addOption('cache', true); $this->addOption('params', array()); $this->addOption('url', sfContext::getInstance()->getController()->genUrl('sfDependentSelectAuto/_ajax')); // source $this->addRequiredOption('source_class', ''); $this->addOption('source_params', array()); parent::configure($options, $attributes); }2.- luego
//en la funcion render modificar la opcion 'dependiente'
public function render($name, $value = null, $attributes = array(), $errors = array()) { ..... ...... ........... $config = array( 'id' => $this->generateId($name), 'opciones' => $values, 'vacio' => true === $this->getOption('add_empty') ? '' : $this->getOption('add_empty'), 'ajax' => $this->getOption('ajax'), 'url' => $this->getOption('url'), 'cache' => $this->getOption('cache'), 'dependiente' => ($this->getOption('widget') == '' ? $this->getOption('depends') : $this->getOption('widget')),//validamos el valor q viene en la opcion 'varref' => '_ds_ref', 'varsoloref' => '_ds_get_ref_value', 'params' => array_merge($this->getOption('params'), array( '_ds_id' => $this->generateId($name), '_ds_source_class' => $sourceClass, '_ds_source_params' => $this->getOption('source_params'), )), ); ..... ...... ........... return $widget . $script; }3.- por ultimo en /proy/lib/form/doctrine/CorrespondenciaForm.class agregas la opcion q acabas de crear... y listo! cuando no necesites
eso solo usas la opcion depends
$this->validatorSchema['receptor_direccion_id'] = new sfValidatorDoctrineChoice(array( 'model' => $this->getRelatedModelName('Direccion'), 'required' => true), array('required' => 'Campo Obligatorio')); $this->widgetSchema['receptor_persona'] = new sfWidgetFormDoctrineDependentSelect(array( 'model' => 'Persona', 'depends' => 'Direccion', 'widget' => 'correspondencia_receptor_direccion_id', // nombre del campo renderizado en el form (combo superior) 'add_empty' => '<- Seleccione receptor ->', 'method' => '__toString', ));
y listo!!
Gracias capo, al fin después de mucho googlear di con tu post!!!!, me solucionastes la vida!!!
ResponderEliminar