public function actionAddBasic($articleId, $languageId)
 {
     if (!empty($articleId)) {
         $article = Article::findOne($articleId);
         $article_translation = ArticleTranslation::find()->where(['article_id' => $articleId, 'language_id' => $languageId])->one();
         if (empty($article_translation)) {
             $article_translation = new ArticleTranslation();
         }
     } else {
         $article = new Article();
         $article_translation = new ArticleTranslation();
     }
     if (Yii::$app->request->isPost) {
         $article->load(Yii::$app->request->post());
         $article_translation->load(Yii::$app->request->post());
         if ($article->validate() && $article_translation->validate()) {
             $article->save();
             $article_translation->article_id = $article->id;
             $article_translation->language_id = $languageId;
             $article_translation->save();
             Yii::$app->getSession()->setFlash('success', 'Data were successfully modified.');
         } else {
             Yii::$app->getSession()->setFlash('danger', 'Failed to change the record.');
         }
     }
     if (\Yii::$app->request->isPjax) {
         return $this->renderPartial('add-basic', ['article' => $article, 'article_translation' => $article_translation, 'categories' => Category::find()->with('translations')->all(), 'selectedLanguage' => Language::findOne($languageId), 'languages' => Language::findAll(['active' => true])]);
     } else {
         return $this->render('save', ['article' => $article, 'languageId' => $languageId, 'viewName' => 'add-basic', 'params' => ['article' => $article, 'article_translation' => $article_translation, 'categories' => Category::find()->with('translations')->all(), 'selectedLanguage' => Language::findOne($languageId), 'languages' => Language::findAll(['active' => true])]]);
     }
 }
Exemplo n.º 2
0
 private function findArticleBySeoUrl($seoUrl, $categoryId, $options = [])
 {
     $articlesSeoData = SeoData::find()->where(['entity_name' => ArticleTranslation::className(), 'seo_url' => $seoUrl])->all();
     if ($articlesSeoData) {
         foreach ($articlesSeoData as $articleSeoData) {
             if ($article = Article::find()->joinWith('translations translation')->where(array_merge(['translation.id' => $articleSeoData->entity_id, 'category_id' => $categoryId, 'translation.language_id' => $this->currentLanguage->id], $options))->one()) {
                 return $article;
             }
         }
     }
     return null;
 }
Exemplo n.º 3
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getTranslations()
 {
     return $this->hasMany(ArticleTranslation::className(), ['article_id' => 'id']);
 }