Problema con DropDownList

Hola, soy bastante nuevo con yii y tengo muchas dudas, algunas las he podido resolver gracias a vosotros en el foro pero esta no le encuentro solución, espero me ayuden.

Tengo este código en un _form.php


<?php echo $form->dropDownList($model, 'email', CHtml::listData(tabla_club::model()->findAll(array('order'=>'nombre')), 'email', 'email', 'nombre'), array([code]'prompt'=>'Selecciona...')); ?>

Lo que hace es mostrarme los email agrupados por nombre del cliente y le pasa a la variable el email seleccionado. El funcinamiento es correcto pero si utilizo


"'email', 'email', 'nombre'"

el


'prompt'=>'Selecciona...')

no me esta funcionando, se posiciona al inicialmente donde le da la gana (no se exactamente el porque).

Sin embargo si utilizo un indice


"'id', 'email', 'nombre'"

se inicializa con Selecciona…

El problema es que yo no quiero pasarle el id sino el email porque luego lo tengo que usar y no quiero tener que andar buscandolo (o podría ser esa la solución, buscarlo otra vez después).

Si alguien me propone una solución se lo agradezco de antemano, voy a seguir buscando de todas maneras.

El metodo dropDownList() acepta un array key=>value por lo cual le estas pasando tres…

http://www.yiiframework.com/doc/api/1.1/CHtml#dropDownList-detail

[b]

data for generating the list options (value=>display)[/b]


<?php echo $form->dropDownList($model, 'email', CHtml::listData(tabla_club::model()->findAll(array('order'=>'nombre')), 'email', 'nombre'), array('empty'=> Yii::t('default', 'Seleccionar')));  ?>

Si la consulta esta correcta deberia imprimir el select <option value="email">nombre</option>

Si es eso lo que entendi de tu pregunta :P

Saludos ::)

Gracias nucklear.

Si te fijas en los paréntesis al dropDownList si le estoy pasando bien los parámetros porque como te dije si pongo el id funcionaba bien. Tu te refieres al lisData y como puedes ver en lisData también le estoy pasando bien los parámetros como quiero (aunque el tuyo también es correcto).

Por lo tanto el problema no era de la construcción del código (tanto el mío como el de nucklear esta bien) sino en la base de datos.

Al parecer había un registro vacio y cuando genera el empty lo hace sobre el primer registro que encuentra vacío y selecciona este por defecto. También crea uno nuevo con el nombre Seleccionar pero no es el que marca como selected.

La pregunta entonces es si es correcto este funcionamiento del lisData porque en teoría no debería haber ningún registro vacío pero si lo hay debería seguir funcionando bien y que dejara el registro vacio como primer valor.

No se ¿qué os parece?