Hola a todos les dire mi situacion ya logre q mi formulario genere campos dinamicamente es decir tengo dos campos FileField Y al hacer click en un poton "aumentar campos" aparecen otros dos FileField. Pero ahora como hago q los cuatro campos actuales los guarde en la base de datos? este es mi actionCreate en la q deberia hacerse la magia:
public function actionCreate()
{
$model=new Problema;
$modelCasoPrueba=new CasoPrueba;
//$this->performAjaxValidation($model,$modelCasoPrueba);
if(isset($_POST['Problema'],$_POST['CasoPrueba']))
{
$model->attributes=$_POST['Problema'];
$modelCasoPrueba->attributes=$_POST['CasoPrueba'];
$valid=$model->validate();
$valid=$modelCasoPrueba->validate() && $valid;
$sql='select max(id_problema) from problema;';
$connection=Yii::app()->db;
$command=$connection->createCommand($sql);
$row=$command->queryRow();
$row["max"]++;
$model->id_problema=$row["max"];
$modelCasoPrueba->id_problema=$row["max"];
if($valid)
{
$nombreProblema=$model->nombre_problema;
$rutaRaiz=Yii::getPathOfAlias("webroot")."/entradas/";
if(!file_exists($rutaRaiz))
mkdir($rutaRaiz);
$rutaBase=Yii::getPathOfAlias("webroot")."/entradas/".$nombreProblema;
if(!file_exists($rutaBase))
mkdir($rutaBase);
$fileA=CUploadedFile::getInstance($model,"ruta_problema");
$fileA->saveAs(Yii::getPathOfAlias("webroot")."/entradas/".$nombreProblema."/".$fileA->getName());
$model->ruta_problema=$rutaBase."/".$fileA->getName();
$fileB=CUploadedFile::getInstance($modelCasoPrueba,"ruta_entrada");
$fileC=CUploadedFile::getInstance($modelCasoPrueba,"ruta_salida");
$fileB->saveAs(Yii::getPathOfAlias("webroot")."/entradas/".$nombreProblema."/".$fileB->getName());
$fileC->saveAs(Yii::getPathOfAlias("webroot")."/entradas/".$nombreProblema."/".$fileC->getName());
$modelCasoPrueba->ruta_entrada=$rutaBase."/".$fileB->getName();
$modelCasoPrueba->ruta_salida=$rutaBase."/".$fileC->getName();
if($model->save() && $modelCasoPrueba->save())
{
foreach ($_POST['Problema']['categoria'] as $id_categoria) {
$categoriaProblema = new CategoriaProblema;
$categoriaProblema->id_problema = $model->id_problema;
$categoriaProblema->id_categoria = $id_categoria;
if (!$categoriaProblema->save()) print_r($categoriaProblema->errors);
}
foreach ($_POST['Problema']['lenguaje'] as $id_lenguaje) {
$lenguajeResolver = new LenguajeResolver();
$lenguajeResolver->id_problema = $model->id_problema;
$lenguajeResolver->id_lenguaje = $id_lenguaje;
if (!$lenguajeResolver->save()) print_r($lenguajeResolver->errors);
}
$modelCasoPrueba->save(false);
$this->redirect(array('index','id'=>$model->id_problema,));
}
}
}
les explico uni dos modelos para un mismo formulario los modelos son problema y casoPrueba los dos FileField para guardarlos en el modelo CasoPrueba pero cuando no es dinamico funciona muy bien. Eso se puede ver en las variables $fileB y $fileC esto funciona. El problema es cuando tendre los nuevos FileField tambien deberian guardarse en fileB y $fileC como hago para que por cada dos nuevos FileField q tenga se guarde en un nuevo modelo caso prueba CasoPrueba?? podrian darme un ejemplo?? perdon por lo largo de mi pregunta pero keria q se entienda lo mas posible