Sacar Valor De Dropdownlist Dependiente

Buenas, soy nuevo en yii, he estado haciendo dos dropdownlist dependientes guiándome de un tutorial que he encontrado por aquí. Ahora esto intentado sacar el id seleccionado del segundo dropdownlist y mandarlo a otra vista para cargar un grid view.Supongo que habrá que hacerlo mediante un botón con javascrip, para poder pasarle la variable id.

Vista con 2 los dos combos:


<div class="row">

<?php	

	//Label "Games"

	echo $form->labelEx($model_games,'Games'); 

	//Inicializo dropDownList con el modelo games

    echo $form->dropDownList($model_games,'Id_Game',CHtml::listData(Games::model()->findAll(),'Id_Game','Name'),

							array(

								'ajax' => array(

												'type' => 'POST',

												'url' => CController::createUrl('Site/Rellenarmodos'),//llamo a la función Rellenar modos para actualizar el combo Modos.

												'update' => '#'.CHtml::activeId($model_modes,'Id_Mode'),

												),

								'prompt' => 'Seleccione un Juego...' )

		); 

?>

</div>

<div class="row">

<?php

	//Label "Modes"

	echo $form->labelEx($model_modes,'Modes'); 

	//Inicializo combobox vacío.

	echo $form->dropDownList($model_modes,'Id_Mode',array(),

	array('prompt' => 'Seleccione Modo...'));

	

	

	echo $form->error($model_modes,'Id_Game'); ?>

   

</div>

Función para rellenar combodependiente en el Controlador:




public actionIndex(){

//Para pasar más de un modelo a una vista ==>

		$this->render('index',array('model_games'=>$model_games,'model_modes'=>$model_modes));

		

	}

	

	// Funcion para llenar combobox dependiente Modos

	public function actionRellenarmodos()

   {

		$Id_Game= $_POST['Games']['Id_Game']; 

		$lista= Modes::model()->findAll('Id_Game='.$Id_Game,array(':Id_Game'=>$Id_Game));

		$lista=CHtml::listData($lista,'Id_Mode','Name');

		

		echo CHtml::tag('option',array('value' => ''),'Seleccione Modo...',true);

		foreach ($lista as $valor => $nombre){

			echo CHtml::tag('option',array('value'=>$valor),CHtml::encode($nombre));

		}

Como tendría que hacer el botón para que me pille el Id_Modo y me lo envíe al controlador?

Pero quieres q al momento de darle clic al segundo dropdownlist, te haga un redirect a otro action, o quieres mostrar en esa misma vista el gridview??

Lo que entendi fue esto:

1 - seleccionas el primer dropdown y por ajax envia el valor al segundo dropdown.

2 - Ahora al seleccionar el segundo dropdown filtras en el gridview que estara en la vista o que quieres q aparezca?? o el gridview esta en otra vista y haras un redirect ?

El gridview esta en otra vista.

Ya he conseguido obtener el id del combo rellenado mediante ajax mediante este botón:


echo CHtml::ajaxButton ("Ver Eventos", CController::createUrl('Site/Events'),

							array('type'=>"POST",

							'update' => '#data',

							'data'=> array('modo_id' => 'js:document.getElementById("Modes_Id_Mode").value')));

En el controlador he intentado hacer esto:


//Ver Eventos

	public function actionEvents(){

		if (isset ($_POST['modo id'])){

			//Recogo el valor del dropdown lsit cargo los registros que contengan ese modo FUNCIONA pero no renderiza la vista "

			$data['idmodo'] = $_POST['modo_id'];

			$model= Events::model()->findAll('Mode='.$data['idmodo']);

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

	}

	else

		$this->render('events');

	}

Obtiene el valor correctamente pero no renderiza la vista :S .¿Por qué me sucede esto?

En el firebug de mozilla cuando llamo a Events me devuelve el codigo html de la vista events, pero no me redirige a esta se mantiene en la vista index :S

Y pq en la vista no usas esto:




<div class="row buttons">

        <?php 

            echo CHtml::submitButton('Button Name'); 

        ?>

    </div>



Dentro de un form claro. Te lo comento pq mediante el botón AJAX estás enviando datos mediante POST, lo cuál puedes hacer mediante un botón de envío de formulario normal.

Yo lo hago así y me vá de perlas.

Un saludo.

Hola, si quieres ir a otra vista tendrías que hacer redirect… Y si lo que quieres es que la pinte donde estás, tendrías que hacer un echo de la vista y recogerlo en alguna div de la view

Saludos!!

Yo lo que no entiendo es que le doy al botón ajax,luego en el actionEvents me recoge bien el $_POST, hace la función y me devuelve como respuesta la vista html con los datos que le corresponde. Ahora viene lo raro, en el navegador se mantiene en index y no cambia a la vista events aunque en el firebug me muestra como respuesta lo que anteriormente he mencionado.

¿Porqué no me redirige a la otra vista si el firebug dice que la respuesta es el codigo html de la vista events?

PD:Lo he solucionado cambiando el botón ajax por un submit como ha dicho el compañero.

Bueno, al parecer me quedare con la duda de porque no me funcionaba el botón ajax. Gracias por las respuestas

Un saludo.