public function actionCreate() { $model = new Menu('create'); $modelMenuLanguage = new MenuLanguage('create'); $listMenutype = MenuType::model()->findAll('status=1 ORDER BY ordering ASC'); $listMenuLanguage = MenuLanguage::model()->getListMenuLanguage($this->getLanguageCode(), NULL, '0,1,2'); $listLanguage = Language::model()->listLanguage(); $attributeInTab = ''; $langerror = 'vn'; $activetab = 0; if (isset($_POST['Menu']) && isset($_POST['MenuLanguage'])) { if (!empty($_POST['Menu']['fake_url'])) { if ($_POST['Menu']['url_type'] != 'category' && $_POST['Menu']['url_type'] != 'post') { $_POST['Menu']['url_type'] = $_POST['Menu']['fake_url']; $_POST['Menu']['url'] = 1; } } else { $_POST['Menu']['url_type'] = NULL; $_POST['Menu']['url'] = NULL; } $model->attributes = $_POST['Menu']; // $model->url = str_replace(PHP_EOL, '', $model->url); $postMenuLanguage = $_POST['MenuLanguage']; $this->validateMenuLanguage($listLanguage, $postMenuLanguage, $modelMenuLanguage, $errorMessage, $attributeInTab); //validate all data in language's tabs, if that is empty record, unset it if (empty($postMenuLanguage)) { Yii::app()->user->setFlash('error', Yii::t('menu', 'Name, Description cannot be blank.')); } if (($errorString = $this->convertErrorMessageToString($errorMessage)) !== FALSE) { Yii::app()->user->setFlash('error', $errorString); if (strpos($errorString, 'Vietnamese') == FALSE && strpos($errorString, 'English') != FALSE) { $langerror = 'en'; } } if ($model->validate() && empty($errorMessage) && !empty($postMenuLanguage)) { $transaction = Yii::app()->db->beginTransaction(); try { $parent = Menu::model()->findByPK($model->parent_id); if ($model->appendTo($parent)) { foreach ($postMenuLanguage as $index => $attribute) { $modelMenuLanguage = new MenuLanguage('create'); $modelMenuLanguage->menu_id = $model->id; $modelMenuLanguage->language_id = $attribute['language_id']; $modelMenuLanguage->name = $attribute['name']; $modelMenuLanguage->description = str_replace(PHP_EOL, '', $attribute['description']); if (!$modelMenuLanguage->save()) { Yii::app()->user->setFlash('error', Yii::t('menu', 'Add menu language failed. Please try it later.')); $transaction->rollback(); } } $transaction->commit(); Yii::app()->user->setFlash('success', Yii::t('menu', 'Add menu successfully.')); $this->redirect(array('/' . backend . '/menu/admin')); } } catch (Exception $ex) { $transaction->rollback(); Yii::app()->user->setFlash('error', Yii::t('menu', 'Add menu failed. Please try it later.')); } } } if ($langerror == 'en') { $activetab = 1; } $this->render(strtolower($this->action->id), array('model' => $model, 'modelMenuLanguage' => $modelMenuLanguage, 'listMenutype' => $listMenutype, 'listLanguage' => $listLanguage, 'listMenuLanguage' => $listMenuLanguage, 'attributeInTab' => $attributeInTab, 'activetab' => $activetab, 'listParentMenutype' => json_encode($listMenuLanguage['menu_type']))); }