Ver elementos en un combobox

Buenas…

Como siempre, al grano: Tengo una clase usuario y necesito colocar los usuarios que cumplen con una cierta condición, por ejemplo "if edad>20 …" dentro de un combobox en un formulario para poder seleccionarlos y luego, al presionar "Aceptar" que tome el ID del usuario como dato.

No se si me explico pero es bien simple.

Gracias.

Una idea seria escribir un metodo en la clase usuarios por ej…


public function findMayoresDeEdad(int $edad)

{

  return Usuarios::model()->findAll(array(

    'condition'=>'t.edad >= :edad',

    'params'=>array(

      ':edad' => $edad,

    ),

  ));

}

Y luego donde necesitas el resultado, por ejemplo aqui en una vista ‘create’… esto en el controlador


public function actionCreate()

{

  // $model = .. 

  $Usuarios = Usuarios::model()->findMayoresDeEdad(20);

  $this->render('create',array(

    'model'=>$model,

    'usuarios'=>$Usuarios,

  ));

}

Y al final en la vista create, suponiendo que $model contiene una definicion para user_id


echo $form->dropDownList($model,'user_id',CHtml::listData($usuarios, 'user_id', 'username'));

Es un ejemplo rapido… no se si realmente es lo que buscas

Mil gracias! Lo pruebo y te comento.

Saludos

El Scope se puede realizar de la siguiente manera:




// creando el scope


public function whereAgeBiggerThan($age){

     $this->getDbCriteria()->addCondition('age >='.$age);


     return $this;

}



Luego en el dropdown




// desde el controlador pasamos la variable $model como siempre


// en dropdown:

$form->dropDownList($model,'user_id',CHtml::listData($model->whereAgeBiggerThan(20)->findAll(), 'user_id', 'username'));




Cheers

Muchísimas gracias muchachos.

Logré solucionarlo colocando la función en el controlador y luego




<?php

echo $form->dropDownList($model,'id',CHtml::listData(user::model()->mayorEdad(x)->findAll(), 'id', 'name'));

?>

Saludos!