Problema con funcion en modelo

Hola amigos del foro, presento el siguiente problema y quisiera ayuda, tengo en un modelo la siguiente funcion:


/**

	 * @return array of valid DEPARTAMENTO name and list

	 */

	public function getDepartamentoOptions() {

		

		$departamentos = new departamentos; //extraigo datos del model DEPARTAMENTO

		

		$codes = $departamentos->findAll();

		$data = array(); // data to be returned

		$data[""] = "--";

		foreach ($codes as $c) {

			$data[$c->id] = $c->departamento;

		}

		return $data;

	}

Esta funcion me permite crear un listado de datos que luego coloco en un DripdownList con el siguiente codigo:


<div class="row">

        <label>Departamento:</label>

        <?php 

			echo CHtml::decode($form->dropDownList($sospechoso, 'vivienda_departamento', $sospechoso->getDepartamentoOptions(), 

				   array(

				   'style'=>'width:225px;',

				   'ajax' => array(

						'type'=>'POST', //request type

						'url'=>$this->createUrl('site/municipio'), //url to call.

						'update'=>'#TipSospechoso_vivienda_municipio', //selector to update

						'data'=>array('departamento[departamentos_id]'=>'js:$(\'#TipSospechoso_vivienda_departamento\').val()'),

				  		 )

				   ))); 

		?>

        <?php echo $form->error($sospechoso,'vivienda_departamento'); ?>

    </div>

Todo funciono, en mi servidor local, es decir no da errores, pero cuando decido subirlo al server la pagina que contiene el dropdown se corta, es decir deja de generar codigo despues del dropdown… he revisado el codigo y no tengo ni la menor idea de que puede ser, agradezco de ante mano cualquier tip…

Casi seguro que tienes el display errors en tu server desactivado y por eso se te corta. Puedes activarlo en el servidor, o ponerte en local que te muestre los warnings? con eso tendrás alguna pista mas

Hola Jandor,

Los cortes en los combos suelen presentarse cuando hay demasiados registros o cuando se agota la memoria para procesar más registros de una consulta (ya me pasó), así que sería bueno probar a modificar el parámetro de php.ini para aumentar la memoria reservada para PHP.

Saludos y éxitos.

Por cierto, la función CHtml::listData, creo que hace lo mismo que getDepartamentoOptions(), échele un vistazo.

y para agregar el campo vacío al principio solo tiene que agregar la opción ‘prompt’:


array(

'prompt'=>'--',

'style'=>'...'

...

)



Saludos y éxitos.

Como te lo comenta robregonm es mucho mas fácil y mejor que utilices la función ListData, como ejemplo te pondre esto




$Var 	= CHtml::listData(

                 Modelo::model()->findAllByAttributes(array('id'=>1)

          ),'id','texto');



Si te fijas en mi variable var esta indicado el método listData donde dice Modelo es el nombre de tu model en tu caso departamentos, luego le indico que a ese model me haga una búsqueda por atributos donde me traiga todos los registros que pertenezcan al id = 1, es como hacer un where en una consulta sql ejemplo: select * from tabla where id = 1 es como lo ando poniendo en el findAllByAttributes te recomiendo checarte en yii las diferentes opciones de busqueda que tiene. Continuando con la expliacación al final notése que pongo id y texto, el id es el nombre de campo de tu pk de tu tabla no se como lo tengas el nombre solo lo puse de ejemplo y el texto es la descripción de tu tabla asi le dices traeme el texto correspondiente a tales ids y con eso te la complicas menos nada mas la variable $Var la indicas dentro del dropdownlist, en donde se llena el arreglo y con eso es mucho mas fácil y menor código. Saludos.