Buenas tardes amigos, tengo un problema al trabajar con dos modelos en un form les cuento un poco, ya tengo funcionando la parte visual, el problema surge cuando voy a guardar el registro en la tabla, tengo dos dropDownList uno para el $model y otro para $b cuando realizo en el controler un implode de $b con la lista me da error: implode(): Invalid arguments passed , implode(",", null). Entonces pense que era un problema de la insercion del model $b pero no lo es debido que agregue otro campo del modelo $b lo verifique y efectivamente estaba llegando al actionCreate con el valor perfecto. Espero haberme explicado, les dejo el form y el actioncreate.
Espero puedan ayudarme o darme una idea de que pasa, Gracias.
_form.php
<?php
/* @var $this PreguntaController */
/* @var $model Pregunta */
/* @var $form CActiveForm */
?>
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'pregunta-form',
// Please note: When you enable ajax validation, make sure the corresponding
// controller action is handling ajax validation correctly.
// There is a call to performAjaxValidation() commented in generated controller code.
// See class documentation of CActiveForm for details on this.
'enableAjaxValidation'=>true,
));
echo $form->errorSummary(array($model,$<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/cool.gif' class='bbc_emoticon' alt='B)' />);
?>
<p class="note">Los campos con <span class="required">*</span> son obligatorios.</p>
<?php //echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'descripcion_pregunta'); ?>
<?php echo $form->textField($model,'descripcion_pregunta',array('size'=>60,'maxlength'=>600)); ?>
<?php echo $form->error($model,'descripcion_pregunta'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'id_caracteristica'); ?>
<?php echo $form->dropDownList($model, 'id_caracteristica', CHtml::listData(
Caracteristica::model()->findAll(), 'id_caracteristica', 'nombre_caracteristica'), array('multiple'=>true )); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'id_aspecto'); ?>
<?php echo $form->dropDownList($model, 'id_aspecto', CHtml::listData(
Aspecto::model()->findAll(), 'id_aspecto', 'nombre_aspecto')); ?>
</div>
<div class="row">
<?php echo $form->labelEx($b,'id_metrica'); ?>
<?php echo $form->dropDownList($b, 'id_metrica', CHtml::listData(
Metrica::model()->findAll(), 'id_metrica', 'nombre_metrica'), array('multiple'=>true )); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'estatus_pregunta'); ?>
<? $options = array ('1' => 'Activa', '0' => 'Inactivo');
echo CHtml::dropDownList('estatus_pregunta', '1', $options);?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
PreguntaController.php
public function actionCreate()
{
$model=new Pregunta;
$b = new Metrica;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Pregunta'] , $_POST['Metrica']))
{
$model->attributes=$_POST['Pregunta'];
$b->attributes=$_POST['Metrica'];
$model->descripcion_pregunta = $model->descripcion_pregunta;
$arr2 = implode(",",$model->attributes['id_caracteristica']);
$model->id_caracteristica=$arr2;
$model->id_aspecto = $model->id_aspecto;
$model->estatus_pregunta = $model->estatus_pregunta;
$model->save();
$arr = implode("," , $b->attributes['id_metrica']);
$b->id_metrica=$arr;
foreach($arr as $met){
$b->id_metrica =$met;
$b->id_pregunta = $model->id_pregunta;
$b->save();
}
}
$this->render('create',array(
'model'=>$model,
'b'=>$b,
));
}