Los Valores De Un Dropdownlist Establece Scenario

Buenas, saludos a todos los desarrolladores en yii!

Mi primer post en este foro es un consulta referente al manejo de scenario segun la seleccion que realice el usuario en un dropdownlist, por ejemplo esta son las reglas que posee:




array('Usuario, Fecha, Categoria_Actividad_Id, Observacion, Horas',  'required'),

array('Categoria_Actividad_Id, Numero_Act, Aplicacion_Id, Fase_Id', 'numerical', 'integerOnly'=>true),

array('Usuario', 'length', 'max'=>10),

array('Observacion', 'length', 'max'=>300),

array('Horas', 'numerical', 'integerOnly'=>true, 'max'=>8, 'min'=>1),

//Reglas dinamicas:

array('Numero_Act, Aplicacion_Id, Fase_Id', 'required', 'on'=>'ActividadLaboral'),



Como veran posee un escenario adicional que se llama ActividadLaboral, coloca requerido 3 campos adicionales y en caso contrario a que no sea una ActividadLaboral, los mismo se colocaran disable en el formulario y su valor null en el modelo:

Vista del Formulario:




<div class="row">

<?php echo $form->labelEx($model,'Categoria_Actividad_Id'); ?>

<?php echo $form->dropDownList($model,'Categoria_Actividad_Id',$model->getMenuCategoriaActividad(), array("empty"=>"- Seleccione -","submit"=>"")); ?>

<?php echo $form->error($model,'Categoria_Actividad_Id'); ?>

</div>


<div class="row">

<?php echo $form->labelEx($model,'Numero_Act'); ?>

<?php echo $form->textField($model,'Numero_Act', array('disabled'=>($model->Scenario == 'ActividadLaboral'? null:'disabled'))); ?>

<?php echo $form->error($model,'Numero_Act'); ?>

</div>


<div class="row">

<?php echo $form->labelEx($model,'Aplicacion_Id'); ?>

<?php echo $form->dropDownList($model,'Aplicacion_Id',$model->getMenuAplicacion(),array("empty"=>"- Seleccione -", 'disabled'=>($model->Scenario == 'ActividadLaboral'? null:'disabled'))); ?> <?php echo $form->error($model,'Aplicacion_Id'); ?>

</div>



En el controlador posee lo siguiente:




public function actionCreate()

{

$model=new Actividad();

$this->performAjaxValidation($model);


if(isset($_POST['Actividad']))

    {

       $model->attributes=$_POST['Actividad'];


        if($model->Categoria_Actividad_Id == 1 || $model->Categoria_Actividad_Id == 2 || $model->Categoria_Actividad_Id == 3 || $model->Categoria_Actividad_Id == 4)

            $model->scenario = 'ActividadLaboral';

            else

            {

            $model->Numero_Act = null;

            $model->Aplicacion_Id = null;

            $model->Fase_Id = null;

            }


if($model->save())

{

Yii::app()->user->setFlash("success","Se ha cargado exitosamente su actividad.");

$this->redirect(array('admin'));

}

    }


$this->render('create',array('model'=>$model));

}






Mi problema es el siguiente, al momento de seleccionar una opcion en el dropdownlist es necesario que se determine el scenario a establecer y con ello se determinara si el resto de los campos son requeridos o disabled.

Hasta el momento la unica forma que encontre para que se actualizara el scenario en el formulario es realizar un submit cada vez que se realice una seleccion en el dropdownlist lo que me ha traido problemas en realizar actualizaciones en actividad que corresponda a la misma categoria de actividad (segun el if en actionCreate) ya que envia el formulario sin presionar el boton destinado para ello.

El metodo que estoy empleando esta correcto? Existe alguna forma de establece el scenario y refrescar el formulario si necesidad de realizar submit y conservando los valores seleccionados en lso campos que cumplen con el scenario? o Existe otro metodo mas optimo para este tipo de caso que yo personalmente denomino formulario dinamicos.

Saludos y agradezco de antemano sus aportes.

Marco, creo que en este otro hilo ya está una solución para un caso similar. Creo que podría ayudarle.

Acepto que no es la solución más limpia, pero podría darle una idea de cómo solucionar su problema.

Saludos.

Si yo hice algo parecido hace poco tal vez te pueda servir, el detalle esta en que si quieres trabajar campos sin hacer un submit tienes que trabajar con funciones jquery yo hice una que tal vez te sirva o puedas aplicar a lo que necesitas, cualquier cosa escríbeme un DM que yo siempre estoy pendiente del foro