如何在Laravel的Session中获取经纬度并设置默认值?
Laravel 从Session获取经纬度及默认值配置方案
基础直接获取方式
Laravel 所有Session读取方法都原生支持传入第二个参数作为默认返回值,有三种常用写法:
- 使用全局
session()辅助函数(最简洁)
// 第二个参数为对应默认值,示例默认值为北京经纬度 $latitude = session('user_location.lat', 39.9042); $longitude = session('user_location.lng', 116.4074);
- 使用Request实例读取
public function index(\Illuminate\Http\Request $request) { $latitude = $request->session()->get('user_location.lat', 39.9042); $longitude = $request->session()->get('user_location.lng', 116.4074); }
- 使用Session门面读取
use Illuminate\Support\Facades\Session; $latitude = Session::get('user_location.lat', 39.9042); $longitude = Session::get('user_location.lng', 116.4074);
全局统一默认值配置方案
如果项目全链路需要复用同一套默认经纬度,建议把默认值抽离到配置文件统一管理,避免硬编码:
- 新建
config/location.php配置文件,写入默认值配置:
<?php return [ 'default_latitude' => 39.9042, 'default_longitude' => 116.4074, ];
- 读取Session时直接调用配置项作为默认值:
$latitude = session('user_location.lat', config('location.default_latitude')); $longitude = session('user_location.lng', config('location.default_longitude'));
可选优化:封装全局辅助函数
如果项目频繁需要读取用户位置信息,可以封装全局辅助函数简化调用:
- 在
app目录下新建helpers.php文件 - 修改
composer.json配置,添加自动加载规则:
"autoload": { "files": [ "app/helpers.php" ] },
- 执行命令
composer dump-autoload加载配置 - 在
helpers.php中写入封装方法:
<?php if (! function_exists('get_user_coordinate')) { function get_user_coordinate(): array { return [ 'lat' => session('user_location.lat', config('location.default_latitude')), 'lng' => session('user_location.lng', config('location.default_longitude')), ]; } }
- 全局任意位置直接调用即可获取经纬度数组:
$coordinate = get_user_coordinate(); // $coordinate['lat'] 为纬度,$coordinate['lng'] 为经度
内容的提问来源于stack exchange,提问作者user16982082
相关产品推荐
相关产品推荐

