我试图根据区域设置语言的会话集选择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')
的值来检查该值是否真的是en
或es
。
你可能想要检索你的区域设置值不是从会话,而是从应用程序本身使用App::getLocale();