public function actionCreate()
 {
     $model = new Cantunidad();
     if (isset($_POST['Cantunidad'])) {
         $model->setAttributes($_POST['Cantunidad']);
         try {
             if ($model->save()) {
                 $this->setFlash('notice', array('title' => 'Mensaje', 'content' => 'Se grabó correctamente.'));
                 $this->redirect(array('manage'));
             }
         } catch (Exception $e) {
             $model->addError('', $e->getMessage());
         }
     } elseif (isset($_GET['Cantunidad'])) {
         $model->attributes = $_GET['Cantunidad'];
     }
     $this->render('create', array('model' => $model));
 }
 public function actionCreate()
 {
     $model = new Practica();
     $modelcantunidad = new Cantunidad();
     if (isset($_POST['Practica'])) {
         $model->setAttributes($_POST['Practica']);
         $transac = Yii::app()->db->beginTransaction();
         try {
             if ($model->save()) {
                 //   $_POST['Cantunidad'] es un arreglo ,
                 //   con una fila por cada item de  tipo de unidad y cantidades
                 //   como se ve en el //practica/_form_alta
                 if (isset($_POST['Cantunidad'])) {
                     $cant = 0;
                     foreach ($_POST['Cantunidad'] as $i => $item) {
                         $modelcantunidad = new Cantunidad();
                         $modelcantunidad->setAttributes($_POST['Cantunidad'][$i]);
                         $cant .= $modelcantunidad->cantidad;
                         $modelcantunidad->idpractica = $model->idpractica;
                         if (!$modelcantunidad->save()) {
                             throw new Exception("Hubo un error al grabar las unidades");
                         }
                     }
                     // validar que al menos una unidad tenga valor >0
                     if ($cant == 0) {
                         $modelcantunidad->addError('', 'Ingrese al menos un valor en unidades');
                         throw new Exception("Hubo un error al grabar las Unidades");
                     }
                 }
                 $transac->commit();
                 $this->setFlash('notice', array('title' => 'Mensaje', 'content' => 'Se grabó correctamente.'));
                 $this->redirect(array('manage'));
             }
         } catch (Exception $e) {
             $transac->rollback();
             $model->addError('', $e->getMessage());
         }
     }
     $this->render('create', array('model' => $model, 'modelcantunidad' => $modelcantunidad));
 }