Eu estou usando o 'ext.jqrelcopy.JQRelcopy' pra poder adicionar campos dinamicamente no meu form.
O problema eh que eu não consigo reproduzir um form que possui uma dropDownList, porque eu não sei oq colocar no lugar do $model.
codigo do form
<?php if (empty($datacomida)): ?> <div class="linha copy"> ....................................................... <div class="linha"> <label class="required"> <?php echo CHtml::encode('Comida '); ?><span class="required">*</span> </label> <?php $listaComida = Comida::model()->findAll(); $list = CHtml::listData($listaComida, 'id', 'nome'); echo $form->dropDownList(??????????, 'id_comida', $list); ?> <?php echo $form->error(??????????, 'id_comida'); ?> </div> <div class="linha"> <label class="required"> <?php echo CHtml::encode('Quantidade '); ?><span class="required">*</span> </label> <?php echo CHtml::textField('PromocaoComida[quantidade][]'); ?> </div> </div> ....................................................... <br> </br> <a id="add_comida" href="#" rel=".copy">Outra Comida</a> <?php else: ?> <?php $idx = 0; $countcomida = count($datacomida); foreach ($datacomida as $comida): $copyClass = ($idx == $countcomida - 1) ? ' copy' : ''; ?> <div class="linha<?php echo $copyClass; ?>"> <div class="linha copy"> <div class="linha"> <label class="required"> <?php echo CHtml::encode('Comida '); ?><span class="required">*</span> </label> <?php $listaComida = Comida::model()->findAll(); $list = CHtml::listData($listaComida, 'id', 'nome'); echo $form->dropDownList(??????????, 'id_comida', $list); ?> <?php echo $form->error(??????????, 'id_comida'); ?> </div> <div class="linha"> <label class="required"> <?php echo CHtml::encode('Quantidade '); ?><span class="required">*</span> </label> <?php echo CHtml::textField('PromocaoComida[quantidade][]', $comida->quantidade); ?> </div> </div> <a class="nocopy" onclick="$(this).parent().remove(); return false;" href="#"><?php echo $removeText; ?></a> </div> <?php $idx++; endforeach; ?> <?php endif; ?> <?php $removeText = 'Remover'; $this->Widget('ext.jqrelcopy.JQRelcopy', array( 'id' => 'add_bebida', 'removeText' => $removeText, 'options' => array('excludeSelector' => '.nocopy'), )); ?>
controller
public function actionCreate() { $model = new Promocao; if (isset($_POST['Promocao'], $_POST['PromocaoComida'], $_POST['PromocaoBebida'])) { $model->attributes = $_POST['Promocao']; if ($model->save()) { if ($this->saveComidas($_POST['PromocaoComida'], $model->id)) { $this->redirect(array('view', 'id' => $model->id)); }else{ //erro } }else{ //erro } $this->redirect(array('index')); } $this->render('create', array( 'model' => $model, )); }
funcao saveComidas
public function saveComidas($formData, $id) { if (empty($formData)) return; $result = array(); $idx = 0; foreach ($formData['quantidade'] as $quantidade) { $model = new PromocaoComida; $model->quantidade = $quantidade; $model->id_promocao = $id; $model->id_comida = $formData['id_comida'][$idx]; if (!$model->save()) return false; $idx++; } return true; }
valeu
