在Laravel上获取Locale会话并选择相应的查询



我试图根据区域设置语言的会话集选择sql查询。然而,就像它应该的那样简单,现在我在视图中得到一个"foreach数组的无效参数",也就是说,它没有传递参数。在检查语言环境添加之前,它确实正确返回英语,但是当我现在添加另一种语言时,IF没有做出决定,因为检查会话不知何故没有正确编写或我不知道什么。我一直在谷歌上搜索,它是这样的:

if (Session::get('locale') == 'en')

    {
         $listings = DB::table('properties')
        ->join('english_descriptions', 'property_id', '=', 'properties.id' )
        ->select('endescription','properties.id','houses1','price', 'bedrooms', 'm2', 'entitle')
        ->get();
        return $listings;
    }
    else{
    if (Session::get('locale') == 'es')

    {

         $listings = DB::table('properties')
        ->join('spanish_descriptions', 'property_id', '=', 'properties.id' )
        ->select('esdescription','properties.id','houses1','price', 'bedrooms', 'm2', 'estitle')
        ->get();
        return $listings;

    }   

我的控制器函数现在是这样的:

public function showListings()
    {  
        var_dump(Session::getLocale());
        $listings = Property::returnListings();
        return View::make('listings', compact('listings'));
    }

确保在使用if-statements时始终有一个回退返回值。

$listings = []; // this will be the default return value if no condition is met
if (Session::get('locale') == 'en') {
     // query for listings in 'en'
}
else if (Session::get('locale') == 'es') {
    // query for listings in 'es'
}
return $listings;

现在对于locale Session,转储Session::get('locale')的值来检查该值是否真的是enes

你可能想要检索你的区域设置值不是从会话,而是从应用程序本身使用App::getLocale();

相关内容

  • 没有找到相关文章

最新更新