2017-03-23 10 views
1
public function quickbar() 
{ 
    $locales = config('app.locales'); 
    $buttons = new \stdClass; 
    foreach ($locales as $locale => $language) 
    { 
     $buttons->$locale = new \stdClass; 
     if($this->translate($locale)) 
     { 
      $buttons->$locale->class = "exists"; 
      $buttons->$locale->link = route('articles.edit', ['slug' => $this->slug, 'locale' => $locale]); 
     } else { 
      $buttons->$locale->class = "missing"; 
      $buttons->$locale->link = route('articles.create', ['slug' => $this->slug, 'locale' => $locale]); 
     } 

     return $buttons; 
    } 
} 

laravel 5.1で私はArticle.phpモデルで上記の関数を作成しました。考えられるのは、提供された言語ごとに記事の翻訳版が存在するかどうかを確認することです。入れ子にされたstdClassが期待した結果を返さない

$locales = config('app.locales'); 

戻り値:

[ 
"en" => "English", 
"fr" => "French", 
"nl" => "Dutch", 
"it" => "italian", 
"de" => "German", 
] 

今すぐforeachループは、これらの言語のそれぞれについて、ネストされたstdClassのオブジェクトを作成する必要がありますが、私は唯一のエン受け取る:

=> {#828 
+"en": {#830 
    +"class": "exists", 
    +"link": "http://multilingual.dev/articles/loading-efficiently/edit/en", 
}, 
} 

を私は理解できませんなぜ私は他の言語を受け取りませんか?

答えて

2

あなたのforeachにはreturnが置かれているようですので、ループは最初のロケールの後で終了します。 foreachの後に配置してください。

+0

どのように恥ずかしい!そんなに愚かな単純な問題をありがとう。時には必要なのは新鮮な目です! – Philwn

関連する問題