ajax e ordenar um combo "<select>"

Bom dia pessoal,

tenho duas duvidas uma é como utilizar o ajax dentro do yii

Reparei que o yii ja disponibiliza do framework JQuery e ja com ajax também mas estou precisando fazer uma ação em ajax que carrego um outro select, como poderia fazer isso?

minha segunda duvida é como ordenar um combo <select>, estou usando o seguinte código:


<?php echo CHtml::activeDropDownList($model, 'avaliacao_id', CHtml::listData(avaliacoes::model()->findAll(), 'id_avaliacao', 'nome'), array('empty'=>'Selecione...'));?>

como posso ordenar essa lista pelo campo nome?

Obrigado pela ajuda.

Oi pessoal, encontrei uma forma de ordenar o combo, ficou assim:




<?php

  $criteria=new CDbCriteria;

  $criteria->order='nome';

  echo CHtml::activeDropDownList($model, 'avaliacao_id', CHtml::listData(avaliacoes::model()->findAll($criteria), 'id_avaliacao', 'nome'), array('empty'=>'Selecione...'));

?>



Bom dia,

andei dando uma pesquisada no forum e encontrei um exemplo:

no meu formulario eu coloquei esse código:




<script>

	$(document).ready(function(){

		$('#classe').change(function(){

			var valor = $(this).attr("value");

			//Até aqui o código funciona.

			$.post('index.php?r=notas/cda', {classe:valor}, function(val){

				$('#divalunos').append(val);

			});

		});

	});

</script>



e no meu controller eu coloquei esse código:




	public function cda(){

		echo $_POST["classe"];

	}



o código java script é executado até onde eu coloquei um comentario ali, e andei procurando erros, não encontrei nenhum erro no javascript…

como posso resolver esse problema? Obrigado.

Cara, eu particularmente nunca usei o método post do jquery, normalmente prefiro fazer requisições ajax completas, mas, pelo que olhei na doc. do jquery, teu código não tem nada de errado … usa o Firebug pra Firefox ou dragonFly do Opera pra poder ver se ele realmente está fazendo esta requisição ai.

Outra coisa, não use o endereço direto no JS


$.post('<?php echo $this->createUrl('minhaview'); ?>', {classe:valor}, function(val){$('#divalunos').append(val);

Acredite em mim, evita muitos problemas de URL :)

caro harry, para ordernar dentro do findAll colocar um array(‘order’=>‘nomeCampoTabela’), se quiser colocar um condição tipo where usa o condition dentro do array exemplo:

array(‘order’=>‘nomeCampoTabela’, ‘condition’=>‘campoTabela = valor’),

Cara ver se ajuda, não tentei e não sei se é isso que você precisa.

no seu controller:

da permissao a action cda





public function accessRules()

	{

		return array(

		

			array('allow', // allow authenticated user to perform 'create' and 'update' actions

				'actions'=>array('create','update','cda'),

				'users'=>array('@'),

			),

			

		);

	}




ai voce cria a funcao cda como action





public function actioncda(){

		echo $_POST["classe"];

	}