public function actionEdit($id)
 {
     $model = Pages::model()->findByPk($id);
     if ($model == null) {
         throw new CHttpException(404, 'Страница не найдена');
     }
     $this->pageTitle = 'Редактирование "' . $model->lang->title . '"';
     $content = new Contents();
     $contentLang = new ContentsLang();
     $modelLangRu = $model->getPagesLangModel('ru');
     $modelLangEs = $model->getPagesLangModel('es');
     $modelLangEn = $model->getPagesLangModel('en');
     $contents = Contents::model()->findAll('page_id=:page_id', array('page_id' => $id));
     if (!empty($_POST) && array_key_exists('PagesLang', $_POST)) {
         //var_dump($_POST['ContentsLang']['home']['ru']);die;
         if (array_key_exists('Pages', $_POST)) {
             $model->attributes = $_POST['Pages'];
         }
         $modelLangRu->attributes = $_POST['PagesLang']['ru'];
         $modelLangEs->attributes = $_POST['PagesLang']['es'];
         $modelLangEn->attributes = $_POST['PagesLang']['en'];
         $transaction = Yii::app()->db->beginTransaction();
         try {
             if (!$model->save()) {
                 throw new Exception('Ошибка при сохранении данных.');
             }
             if (!$modelLangRu->save()) {
                 throw new Exception('Ошибка при сохранении данных.');
             }
             if (!$modelLangEs->save()) {
                 throw new Exception('Ошибка при сохранении данных.');
             }
             if (!$modelLangEn->save()) {
                 throw new Exception('Ошибка при сохранении данных.');
             }
             PagesLang::model()->updateAll(array('langs' => '|ru|es|en|'), 'page_id=:page_id', array('page_id' => $id));
             $contentsLang = Yii::app()->request->getPost('ContentsLang');
             if ($contentsLang) {
                 foreach ($contentsLang as $alias => $block) {
                     $modelContents = Contents::model()->find('alias=:alias AND page_id=:page_id', array('page_id' => $id, 'alias' => $alias));
                     foreach ($block as $lang => $content) {
                         $relation = 'lang_' . $lang;
                         $modelContents->{$relation}->text = $content['text'];
                         if (!$modelContents->{$relation}->save()) {
                             throw new Exception('Ошибка при сохранении данных.');
                         }
                     }
                 }
             }
             $transaction->commit();
         } catch (Exception $e) {
             $error = $e->getMessage();
             $transaction->rollBack();
         }
         Yii::app()->user->setFlash('success', 'Страница успешно отредактирована');
         Yii::app()->request->redirect($this->createUrl('index'));
     }
     $this->render('edit', array('model' => $model, 'modelLangRu' => $modelLangRu, 'modelLangEs' => $modelLangEs, 'modelLangEn' => $modelLangEn, 'contents' => $contents, 'textBlock' => $content, 'textBlockLang' => $contentLang));
 }
Exemple #2
0
 public function getTitleByLang($lang)
 {
     $pagesLang = PagesLang::model()->find('page_id=:page_id AND lang=:lang', array('page_id' => $this->id, 'lang' => $lang));
     if ($pagesLang) {
         return $pagesLang->title;
     }
     return $this->lang->title;
 }
Exemple #3
0
 public function getPagesLangModel($lang)
 {
     $pagesLang = PagesLang::model()->find('page_id=:page_id AND lang=:lang', array('page_id' => $this->id, 'lang' => $lang));
     if (!$pagesLang) {
         $pagesLang = new PagesLang();
         //var_dump($this->lang);die;
         $pagesLang->attributes = $this->lang->attributes;
         $pagesLang->lang = $lang;
         $pagesLang->id = null;
         return $pagesLang;
     }
     return $pagesLang;
 }