Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/10/2011, 11:49
Avatar de Uncontroled_Duck
Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 13 años
Puntos: 261
Form y pasar MultiOptions a un Select

Pues como dice el título, estoy intentando pasar los datos de la DB a un Select de Zend_Form.

El tema es el siguiente, desde el controller paso los datos al form, estos se visualizan correctamente, pero al enviarlos, no pasan el isValid si no tiene valores definidos el array del Select.

Pongo el caso real. Hay algo que no estoy haciendo bien.

El select del form:
Código PHP:
//select
$this->addElement(
        
'select''delegation', array(
        
'label' => 'Delegation',
        
'multioptions' => array(),
        
'required' => false,
    )
); 
La función que trae el array del controller:
Código PHP:
public function setDefaultsFromEntity($user$select)
{
    
//setear el select
    
$select $this->getElement('delegation');
    
$select->clearMultiOptions();
    
$select->addMultiOptions($select);

    
//default values for select
    
$values = array(
        
'delegation'    => $user[0]['delId'],
    );
    
$this->setDefaults($values);


Pues bien, imaginemos que el array para setear el select trae 5 valores.
0 => 'uno'
1 => 'dos'
2 => 'tres'
3 => 'cuatro'
4 => 'cinco'

Con el select tal cual está, no pasa el isValid. sale el error traducido "No se ha encontrado '1' en el argumento especificado" a pesar de que se ven todos los valores seteados.

Pero si añado por ejemplo dos valores directamente al MultiOptions del select
Código PHP:
//select
$this->addElement(
        
'select''delegation', array(
        
'label' => 'Delegation',
        
'multioptions' => array(
            
=> 'unValor',
            
=> 'otroValor',
        ),
        
'required' => false,
    )
); 
Pasa el isValid si coincide con la posición que tiene el array del select.
En este caso solo pasarían los que tienen indice 0 y 1. El resto saldría el error.

He probado con clearMultiOptions, addMultiOptions, setMultiOptions, mezclando, quitando, poniendo y con todo me sale lo mismo.

Alguna pista de que puede ser.

Gracias de antemano y saludos,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight