Boa tarde! Precisava de ajuda no seguinte:
Criei um form com duas DropdownList. Em função do que escolher na primeira dropdown que é referente aos Serviços são listados os materiais associados a esse serviço que previamente defini na base de dados.
Até aqui tudo bem, está tudo a funcionar direito. O problema é quando quero atualizar esses mesmos dados que inseri. Não consigo que os dados sejam mostrados nas duas Dropdownlists conforme o que foi inserido. Aparecem os valores por defeito, ou seja, na primeira Dropdownlist "Escolha Servico" e na segunda Dropdownlist aparece em branco, porque neste caso só depois de escolher a primeira é que atualiza a segunda. Mas como estou a atualizar tem que aparecer automaticamente selecionados as dropdownlist e nao estou a conseguir.
A minha view (form create):
<div class="row">
<?php echo $form->labelEx($model,'ServicoId'); ?>
<?php
echo CHtml::dropDownList('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>
<div class="row">
<?php echo $form->labelEx($model,'MaterialId'); ?>
<?php echo CHtml::dropDownList('MaterialId','', array()); ?>
<?php echo $form->error($model,'MaterialId'); ?>
</div>
O meu controller:
public function actionSendMaterialId()
{
// Zec / Devolve material fico depois de escolher o servico e o Material
$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);
}
}
public function actionCreate()
{
$model=new RequisicoesBlocos;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['RequisicoesBlocos']))
{
$model->attributes=$_POST['RequisicoesBlocos'];
$model->Data = date("Y-m-d H:i:s");
$model->MaterialId = $_POST['MaterialId'];
$model->ServicoId = $_POST['ServicoId'];
if($model->save())
$this->redirect(array('index'));
}
$this->render('create',array(
'model'=>$model,
));
}
/**
* Updates a particular model.
* If update is successful, the browser will be redirected to the 'view' page.
* @param integer $id the ID of the model to be updated
*/
public function actionUpdate($id)
{
$model=$this->loadModel($id);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['RequisicoesBlocos']))
{
$model->attributes=$_POST['RequisicoesBlocos'];
if($model->save())
$this->redirect(array('view','id'=>$model->Id));
}
$this->render('update',array(
'model'=>$model,
));
}
Como é que faço isso?
Abraço!