原理
- 通过遍历可用的城市数据,获取一个默认的值is_default = 1 时,break终止循环 ,如果没有值就给一个默认的值
- 需要考虑当点击切换到一个城市后回到了首页,即url后没有关于城市的get参数,所以用session存储选中的城市
demo: o2o controller : index\Base view : publilc\head
public $city = '';
public function _initialize()
{
// 城市数据
$citys = model('City')->getNormalFirstCity();
$this->getCity($citys);
$this->assign([
'citys' => $citys, //切换城市
'city' => $this->city, //当前选定城市
]);
}
public function getCity($citys)
{
foreach ($citys as $city){
$city = $city->toArray();
if ($city['is_default'] == 1){
$defaultuname = $city['uname'];
break; //如果有终止循环
}
}
$defaultuname = isset($defaultuname) ? $defaultuname : 'JiLin'; // $defaultuname有值就等于$defaultuname,否则默认吉林
if (session('cityuname','','index') && !input('get.city')){ // 有session , (点击过切换城市,但是没有url后缀)
$cityuname = session('cityuname','','index');
}else{
$cityuname = input('get.city',$defaultuname,'trim'); //没有获取的城市默认是 $defaultuname
session('cityuname',$cityuname,'index');
}
$this->city = model('City')->get(['uname'=>$cityuname]);
}
{$city['name']}
{volist id="vo" name="citys"}
{$vo.name}
{/volist}