コード例 #1
0
 /**
  * Creates a new Cardapio model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate()
 {
     $modelCardapio = new Cardapio();
     $modelItemCardapio = new Itemcardapio();
     $mensagem = "";
     $produtos = ArrayHelper::map(Produto::find()->where(['isInsumo' => 0])->orderBy('nome ASC')->all(), 'idProduto', 'nome');
     if ($modelCardapio->load(Yii::$app->request->post())) {
         //Inicia a transação:
         $transaction = \Yii::$app->db->beginTransaction();
         try {
             $itensInseridos = true;
             if ($modelCardapio->save()) {
                 $itensCardapio = Yii::$app->request->post()['Itemcardapio'];
                 for ($i = 0; $i < count($itensCardapio['idProduto']); $i++) {
                     $itemCardapio = new Itemcardapio();
                     $itemCardapio->idCardapio = $modelCardapio->idCardapio;
                     $itemCardapio->idProduto = $itensCardapio['idProduto'][$i];
                     $itemCardapio->ordem = $itensCardapio['ordem'][$i];
                     if (!$itemCardapio->save()) {
                         $itensInseridos = false;
                     }
                 }
                 if ($itensInseridos) {
                     $transaction->commit();
                     return $this->redirect(['view', 'id' => $modelCardapio->idCardapio]);
                 } else {
                     $mensagem = "Não foi possível salvar os dados";
                     $transaction->rollBack();
                     //desfaz alterações no BD
                 }
             }
         } catch (\Exception $exception) {
             $transaction->rollBack();
             $mensagem = "Ocorreu uma falha inesperada ao tentar salvar";
         }
     }
     //Seta o fuso horário brasileiro
     date_default_timezone_set('America/Sao_Paulo');
     $modelCardapio->data = date('Y-m-d');
     return $this->render('create', ['modelCardapio' => $modelCardapio, 'modelItemCardapio' => $modelItemCardapio, 'mensagem' => $mensagem, 'produtos' => $produtos]);
 }