Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый день. Проблема такая. Есть таблица articles у которой приблизительная структура такая:
$table->string('title_ru');
$table->string('title_en')->nullable();
$table->text('content_ru');
$table->text('content_en')->nullable();
$table->.....
Не кидайтесь на меня я знаю что такое решение мало назвать костыльным, но суть вот в чем ->
В переменной $articles я храню все посты. Мне нужно в контроллере прочекать текущий язык и вывести в статью соответствующий title и content.
Чекать и менять язык на соответствующий я собрался так
if (App::getLocale() == 'ru')
{
foreach($articles as $article)
{
$article['title'] = $article->title_ru;
}
}
Все замечательно, только вот как сохранить данные изменения обратно в переменную $articles что бы передать во view и распарсить там тем же @foreach !? Заранее благодарю.
Не в сети
если $articles - это коллекция моделей элоквент:
$lang = App::getLocale();
if (!in_array($lang, ['ru', 'en')) {
throw new \Exception(sprintf('unsupported language %s', $lang));
}
$article['title'] = $article['title_ ' . $lang];
Не в сети
если $articles - это коллекция моделей элоквент:
Спасибо большое за вмешательство но думаю вы не поняли суть вопроса.
Решил так
if(App::getLocale()=="ru"){
foreach($articles as $key=>$article){
$article["title"] = $article->title_ru;
$articles[$key]=$article;
unset($key,$article);
}
}
Можете закрывать!
Изменено MeKree (26.07.2017 00:04:51)
Не в сети
Можно ведь использовать аксессор
public function getTitleAttribute()
{
$locale = \App::getLocale();
$column = "title_" . $locale;
return $this->{$column};
}
Не в сети
Страницы 1