Created
March 29, 2016 15:15
-
-
Save alexaandrov/ed18a20f7c76265a758e to your computer and use it in GitHub Desktop.
Реализация мультиязычности
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Сомневался в добавлении этого в статью. Добавлю комментом. Обычно делаем через таблицу связей. Типичный пример для блога и постов. | |
Таблица post(модель Post) — храним метаинформацию, которая не имеет отношения к контенту. | |
То есть такие поля: id, owner_id, date_create, date_update. | |
Таблица post_lang(модель PostLang) — связь контента по языкам. Поля: id, post_id, lang_id, name, description. | |
Соответственно поля post_id — это id из таблицы post, lang_id — это id из таблицы lang. name и | |
description — контент на соответствующем языке. | |
В модель Post добавляем отношение: | |
public function getContent($lang_id=null) | |
{ | |
$lang_id = ($lang_id === null)? Lang::getCurrent()->id: $lang_id; | |
return $this->hasOne(PostLang::className(), ['post_id' => 'id'])->where('lang_id = :lang_id', [':lang_id' => $lang_id]); | |
} | |
Тогда в отображении, для текущего языка, контент можно получить так: $post->content->name; — заголовок поста, $post->content->description; — сам пост. | |
Или для контента на определенном языке, задав идентификатор языка($lang_id): $post->getContent($lang_id)->name; $post->getContent($lang_id)->description; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment