 Laravel по-русски
Laravel по-русски
      
      
    Русское сообщество разработки на 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