2017-02-15 135 views
0

我是Laravel的新成员,并试图使所有视图的头部共享内容的变量,但问题是获取的语言与我的空值为null提供者(AppServiceProvider)类。在Laravel的提供者类中获取语言环境语言

这里是我的代码:

public function boot() 
{ 
    // $language=App::setLocale($locale); 
    $locale = App::getLocale(); 
    \Session::put('language', 'en'); 
    \Config::get('app.locale'); 
    \Config::get('languages') ; 
    \Session::get('languages', 'en'); 
    $lang = Session::get ('locale'); 

    $products = ProductsTranslation::join('products', 'products.id', '=', 'products_translations.product_id')->where('language',$lang) ->get();       

    $postId = Post::get(); 
    view()->share('products', $products,'language',' \Session::get("language", $locale)','postId',$postId);  
} 
+0

你能更好地描述你的问题?你期望看到什么?你看到了什么? –

+0

我试图在我的页脚上使用产品变量(为每个视图共享)。 如果我使用这个查询: $ products = ProductsTranslation :: join('products','products.id','=','products_translations.product_id') - > get(); 我收到了我用过的两种语言的所有产品。 我需要使用where条件where('language',$ lang)只获取当前lang的语言,但$ lang变量返回null,即使在使用config \ Config :: get('languages')之后; –

+0

你的配置中是否有'languages'? –

回答

0

有与片段的几个问题:

  • share()方法只需要两个参数,而不是重复键,值配对
  • 价值预期languageSession::get("language", $locale)的结果,但实际上放置的是字符串'\ Session :: get(“language”,$ locale)'。

基于这一点,你需要重写如下

view()->share('products', $products); 
view()->share('language', Session::get('language', $locale)); 
view()->share('postId', $postId);