public function actionUpdate($id) { $model = $this->loadModel($id); $cantunidad = $model->cantunidads; //relacion para obtener los registros de cantunidad $modelcantunidad = new Cantunidad('update'); if (isset($_POST['Practica']) && isset($_POST['Cantunidad'])) { $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 _form $cant = 0; // variable para controlar que al menos una // cantidad sea >0 foreach ($_POST['Cantunidad'] as $i => $item) { $id = $_POST['Cantunidad'][$i]['idcantunidad']; $modelcantunidad = Cantunidad::model()->findByPk($id); $modelcantunidad->attributes = $_POST['Cantunidad'][$i]; $cant .= $modelcantunidad->cantidad; 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 actualizó correctamente.')); $this->redirect(array('manage')); } } catch (Exception $e) { $transac->rollback(); $model->addError('', $e->getMessage()); } } $this->render('update', array('model' => $model, 'modelcantunidad' => $modelcantunidad, 'cantunidad' => $cantunidad)); }
public function loadModel($id) { $model = Cantunidad::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, Yii::t('app', 'The requested page does not exist.')); } return $model; }