listData


<?php echo $form->dropDownList($model,'usuarios_id',CHtml::listData(Usuarios::model()->findAll(),'id','nombre')); ?>

Estoy intentando hacer que el formulario me muestre el nombre del usuario por ID,

me muestra solo una lista de valores 0.

Seguro que estoy haciendo algo mal ya que llevo 2 días con yii pero no se que es lo que he echo mal, no doy con el fallo, yii no me devuelve ningún error.

Espero que me puedan ayudar.

Muchas gracias de antemano.

Hola, existe en tu $model la propiedad usuarios_id, o es un campo de la tabla a la que representa el model ??

hola como primera prueba, realiza lo siguiente, para saber que tu findAll esta realmente devolviendo datos:

pon este fragmento de codigo debajo de tu lista, y cuando abras la vista, copia aqui lo que ella devuelve, y asi podremos ayudarte mejor.




<?php 

  echo "<ul>";

   foreach(Usuarios::model()->findAll() as $u){


      $id = $u->id;

      $nom = $u->nombre;

       echo "<li>{$id}  - {$nom}</li>";

  }

  echo "</ul>";

?>



me devuelve :

1 - 0

2 - 0

3 - 0

4 - 0

5 - 0

6 - 0

7 - 0

y son 7 usuarios los que tengo el la tabla.

es un campo de la tabla.

el model lo he generado automáticamente con gii.

el problema obviamente es algo en el modelo, no en la vista, no en la controladora,

por la razon de que la lista generada entrega solo ceros, y por supuesto ceros sera lo que la vista mostrará.

fijate que la lista es hecha de "Usuarios->id" el cual funciona bien, pero, cuando pides "Usuarios->nombre" entrega cero.

verifica que: en tu base de datos, realmente la columna "nombre" exista, y tenga nombres y no ceros, (no es tan obvio como suele uno pensar, porque

quiza algun proceso erroneo haya borrado los nombres y no te hayas dado cuenta, me ha pasado)-

luego verifica que: el modelo Usuarios no tenga definido un metodo llamado

public function getNombre(){}

porque debido a los "magic" get/set de php, entonces cuando invocas a Usuarios->nombre, estas invocando a "Usuarios->getNombre()", y quiza esto sea la razon del fallo, en caso de que tu db tenga datos correctos.

verfica ambos casos y reportalos en ese mismo orden aqui.

adjunto a las dos pruebas extra que te sugiero hacer arriba, haz lo siguiente:

(esto imprimira toda la lista de tu array, a ver que campos realmente tiene)

[color=#666600]<?[/color][color=#000000]php [/color][color=#660066]$data = CJSON::encode(Usuarios[/color][color=#666600]::[/color][color=#000000]model[/color]color=#666600->[/color][color=#000000]findAll[/color]color=#666600);[/color][color=#000000] [/color]echo [color=#008800]"[JSON_BEGIN]$data[JSON_ENDS]"[/color][color=#666600]; [/color][color=#666600]?>[/color]

es :


 <?php $data = CJSON::encode(Usuarios::model()->findAll()); echo "[JSON_BEGIN]".$data."[JSON_ENDS]"; ?> 

con "…" .

Ya vi el error gracias a esta linea :)

me he equivocado en el campo de la base de datos :)

por error le di integer :unsure: en ves de varchar y lógicamente en vez de guardar el nombre yii me guardo 0 en el campo de la base de datos por esto no me salían los nombres.

gracias por CJSON no lo conocía, me ha mostrado los campos nombre como =0 y me di cuenta del error :)

gracias por la ayuda y pido disculpas por ser tan despistado :D

Muchas gracias a todos.