Srs,
eu fiz o exemplo Creating a dependent dropdown. Porém, o método que eu criei no controller não está sendo executado para alimentar o dropDownList dependente.
vocês sabem o que pode estar acontecendo?
Eu estou desconfiando do comando CController::createUrl(‘currentController/dynamiccities’) do DropoDownlist independente.
Apesar de ter criado o método actionDynamiccities no Controller corrente da view.
Olá Santanna.
Ainda não implementei esse exemplo, mas de início, sugiro que vc utilize o firebug para analisar essa requisição.
bono1972
(Vilassite)
June 18, 2012, 11:26am
3
Segue o meu exemplo que está funcinando:
na view:
<div class="row">
<?php echo $form->labelEx($model,'ServicoId'); ?>
<?php
echo CHtml::dropDownList('ServicoId',$model->ServicoId, CHtml::listData(Servicos::model()->findAll(),'Id','Nome'),
array(
'empty'=>'Escolha Servico',
'ajax' => array(
'type'=>'POST', //request type
'url'=>CController::createUrl('requisicoesBlocos/SendMaterialId'),
'update'=>'#MaterialId', //selector to update
)
)
);
?>
<?php echo $form->error($model,'ServicoId'); ?>
</div>
<?php
// Este bloco serve para quando fazemos update
$data = array();
if(!$model->isNewRecord){
$qry = "SELECT * from materiais
inner join materiais_servicos on
materiais_servicos.ServicoId = '{$model->ServicoId}'
and materiais_servicos.MaterialId = materiais.Id
group by Nome;";
$result = Yii::app()->db->createCommand($qry)->queryAll();
$data=CHtml::listData($result,'MaterialId', 'Nome');
}
?>
<div class="row">
<?php echo $form->labelEx($model,'MaterialId'); ?>
<?php echo CHtml::dropDownList('MaterialId',$model->MaterialId, $data); ?>
<?php echo $form->error($model,'MaterialId'); ?>
</div>
No Controller:
public function actionSendMaterialId()
{
$qry = 'SELECT * from materiais
inner join materiais_servicos on
materiais_servicos.ServicoId = '.'"'.$_POST['ServicoId'].'"
and materiais_servicos.MaterialId = materiais.Id
group by Nome;';
$result = Yii::app()->db->createCommand($qry)->queryAll();
$data=CHtml::listData($result,'MaterialId', 'Nome');
foreach($data as $id => $value)
{
echo CHtml::tag('option',array('value' => $id),CHtml::encode($value),true);
}
}
Nao te esqueças nas Rules do Controller pôr o ‘SendMaterialId’:
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('index','view', 'SendMaterialId'),
'users'=>array('*'),
),
Espero ter ajudado. Abraço!
Thiago e Bono,
obrigado pela ajuda. Estava faltando alterar a questão das rules.
vlw pessoal
Abraços.