(Solucionado) Llenar Combo Box con los datos de una tabla.

Saludos para todos :)

Soy nueva con el Yii, y bueno ya llevo varios días patinando con el siguiente tema.

Debo cargar un combo box con los datos de una tabla (departamentos) en el formulario de empleados.

Leyendo y releyendo el foro he logrado algo pero aun no funciona del todo bien, empezare de atrás hacia adelante con lo que llevo para ver si me pueden echar una manito.

  1. Tengo una VISTA de empleados, y en el archivo _form.php de esa vista tengo la siguiente línea:

<?php echo $form->dropDownList($model,'departmentId', $model->getListaDepartamentos()); ?>

Esta funciona bien porque cuando lleno manualmente la función getListaDepartamentos() el combo se llena correcto.

  1. En el MODELO empleados (empleados.php) tengo definida la función getListaDepartamentos() .

	public function getListaDepartamentos ()

	{

array = departmentos::model()->findByAttributes(array('nombreDpto'=>$this->departmentId)),

	}

  1. La tabla empleados tiene los campos Id y nombreDpto (ejemplo: 4, departamento de contabilidad).

Finalmente para complementar, en el archivo main.php la coneccion a la base de datos esta establecida correctamente dentro de la seccion:


		'db'=>array(

			'connectionString' => etc, etc, etc

		),

Y ese es el problema en el punto 2, :( no sé cómo sacar bien los datos de la tabla, para ponerlos en un array para que la función getListaDepartamentos de devuelva los datos a la vista.

te falta CHtml::listData





<?php echo $form->dropDownList($model,'departmentId', CHtml::listData($model->getListaDepartamentos(),'departmentId','description'); ?>



Hola HOracio, mil gracias por tu respuesta.

Efectivamente, asi funciona y el combo se popula correctamente. :D

Pero me queda la duda, dado que en el manual recomiendan separar lo que llaman las reglas del negocio de la parte visual. es decir no dejar que la vista haga el trabajo, asi si hay que hacer modificaciones se cambia solo la funcion y no se tocaninguna vista.

::) Como puedo hacer para que la funcion getListaDepartamentos () que esta en el modelo le devuelva los datos a la vista ?

es decir que esto


CHtml::listData(department::model()->findAll(), 'id','name')

quede dentro de la funcion. ?

Ya lo logreee

Era cuestion de escribirla correctamente,tengo problemas de gramatica, jejej.

El combo sale un poquitin desordenado, pero bueno ya muestra los datos.


	public function getListaDepartamentos()

	{

		return array(

		CHtml::listData(department::model()->findAll(), 'id','name'),array('empty'=>array(NULL=>'-- Seleccione --')),

		

	);

Horacio muchas gracias por tu ayuda, buen dia !!

Me alegro

para ordenar solo tienes que agregar un criterio y setear la propiedad order

algo asi:




...

$criteria = new CDbCriteria();

$criteria->order='name';

return department::model()->findAll($criteria);

}



Ref: http://www.yiiframework.com/doc/api/1.1/CDbCriteria

saludos

Hola…amigos…soy novatillo con el framework yii, entre a buscar informacion sobre como llenar el combo box desde una tabla que tengo en mi base de datos y consegui este post pero no logre llenar de datos mi combobox haber si me ayudan ps…:

Miren tengo dos tablas una: vehiculo y la otra tipo_vehiculo, vehiculo tiene los siguientes campos: id_Placa,Tipo_Vehiculo y Tiempo_Embarque y tipo_vehiculo las siguientes: idTipo_Vehiculo y Nom_tipo.

lo que quiero es sacar la informacion del campo Nom_tipo de la tabla tipo_vehiculo a mi formulario Vehiculo que es el siguiente:

<?php echo form->dropDownList($model,‘Tipo_Vehiculo’,CHtml::listData($model->getListaDeTiposVehiculos(),‘idTipo_Vehiculo’,‘Nom_Tipo’)); ?>

y tengo mi modelo Vehiculo.php con la suigente metodo:

public function getListaDeTiposVehiculos()

    {


            return array(


            CHtml::listData(TipoVehiculo::model()-&gt;findAll(), 'idTipo_Vehiculo','Nom_Tipo'),array('empty'=&gt;array(NULL=&gt;'-- Seleccione --')),


            


    );


	}

NOSE QUE ESTARE HACIENDO MAL…HABER SI ME AYUDAN…LES AGREDECERIA UN MONTON…GRACIAS…DE ANTEMANO…