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)); }
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; }
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; }