Laravel Backpack中地址输入固定定位实现及视图不存在报错解决
Laravel Backpack自定义谷歌地图字段找不到视图报错解决方案
这个报错是因为你使用的abr4xas/gmaps-input-backpack第三方字段包适配的是旧版Laravel Backpack,Backpack 5.x及以上版本将原本crud::inc命名空间下的公共视图组件全部迁移到了crud::components路径下,因此模板中引用的inc.field_wrapper_attributes和inc.field_attributes视图文件无法被找到。
解决步骤
- 发布第三方包模板到项目目录(禁止直接修改vendor下的文件)
运行以下Artisan命令将字段模板发布到项目可编辑目录:
php artisan vendor:publish --provider="Abr4xas\GmapsInputBackpack\GmapsInputBackpackServiceProvider"
执行完成后,模板文件会被复制到resources/views/vendor/abr4xas/gmaps-input-backpack/fields/customGoogleMaps.blade.php路径下,后续修改这个文件即可。
- 替换模板中的视图引用路径
打开上述模板文件,修改两处@include代码:
- 将第一行的
@include('crud::inc.field_wrapper_attributes')替换为@include('crud::components.field-wrapper-attributes') - 将input标签内的
@include('crud::inc.field_attributes')替换为@include('crud::components.field-attributes')
- 兜底兼容方案(如果替换后仍报错)
如果你使用的Backpack版本特殊找不到上述组件,也可以直接用固定属性替代两个include的逻辑:
- 第一行的div改为:
<div class="form-group mb-3"> - input标签内的include替换为:
class="form-control map-input" {{ isset($field['attributes']) ? implode(' ', array_map(fn($k, $v) => "$k=\"$v\"", array_keys($field['attributes']), $field['attributes'])) : '' }}
修改完成后清空视图缓存即可生效:
php artisan view:clear
后续注意事项
- 确认
.env文件中已正确配置GOOGLE_MAPS_API_KEY参数 - 对应CRUD的模型需要将
address_input、address_latitude、address_longitude三个字段加入$fillable属性,否则数据无法保存
内容的提问来源于stack exchange,提问作者Haymanot Brhane
相关产品推荐
相关产品推荐

