===== Formularios: CActiveForm ===== ==== Desplegables: Atributos con un conjunto de valores permitidos ==== Cuando un atributo solo admite un conjunto de valores, lo típico será mostrar un desplegable. En el caso de atributos con valores fijos (ver estado en Crear/configruar Modelos), utilizaremos como opciones la propiedad ATRIBUTOOptions: echo $form->dropDownList($model,"estado",$model->estadoOptions,array('empty'=>'Seleccione...')); ==== Atributos relacionados con otro modelo ==== Si tenemos un atributo cuyos valores están relacionados con otro modelo mediante una relación BELONGS_TO, lo típico será mostrar un desplegable con los valores posibles. Para ello, cargaremos los valores con findAll(), que devuelve un array de objetos, y lo convertiremos a un array clave=>descripción mediante la función CHtml::listData(), que es lo que necesita el input dropdownList $options=CHtml::listData(Usuarios::model()->findAll(),'id','nombre'); echo $form->dropDownList($model,"usuarios_id",$options,array('empty'=>'Seleccione...')); ==== Cómo hacer un formulario con varios campos en una misma línea ==== Incluir en main.css: div.form .beginrow { float:left; padding-right:10px; } div.form .col { padding-right:10px; float:left; } div.form .endrow {clear: left; } En la vista, utilizar class=beginrow para el primer campo de la fila, class=col para el resto y añadir
para terminar la linea ==== Campos de fecha con selector de calendario ==== Utilizamos el widget CJuiDatePicker. Con el parámetro options podemos hacer ajustes de visualización o de filtro (Ver CJuiDataPicker) $this->widget('zii.widgets.jui.CJuiDatePicker', array( 'model'=>$model, 'attribute'=>'fecha_envio', 'options'=>array( 'dateFormat'=>'dd/mm/yy', 'minDate'=>'+1d', //La fecha ha de ser como mínimo mañana ), ));