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!