在我的PageTemplates.php中,我有一个这样的字段:
$this->crud->addField([
'name' => 'adres',
'label' => 'Adres',
'type' => 'address',
'fake' => true,
]);
现在我也想保存他们给予的地址的纬度和经度(如果可以找到的话)。我已经复制了PageCrudController并将config/backpack/pagemanager.php中的配置更改为:
return [
'admin_controller_class' => 'App\Http\Controllers\Admin\PageCrudController',
'page_model_class' => 'App\Models\Page',
];
在我的商店功能中,我有:
public function store(StoreRequest $request)
{
$address = $request->request->get('adres');
$addressObj = app('geocoder')->geocode($address)->get()->first();
if($addressObj)
{
}
$this->addDefaultPageFields(\Request::input('template'));
$this->useTemplate(\Request::input('template'));
return parent::storeCrud();
}
但是我在if语句中放置了什么呢?我如何在数据库的extras字段中添加(=设置)一个额外的字段呢?
3条答案
按热度按时间wkyowqbh1#
在背包4.1中,我通过以下方式解决了我的问题:覆盖我的控制器中的store方法,在请求中设置我的额外字段,然后调用背包store方法。不要忘记添加包含背包特性。希望该解决方案能对其他人有所帮助
4jb9z9bj2#
通过执行以下操作修复了该问题:
将纬度和经度添加为隐藏字段:
通过执行以下操作设置属性:
将
parent::updateCrud
变更为parent::updateCrud($request);
。fnatzsnv3#
对于仍在关注这个问题的人,我建议你遵循Laravel Backpack文档中回调部分下的注解中的建议,如果你不只是想观察从Backpack管理面板中所做的更改,你只需要创建一个可观察的。
为此,您可以执行以下操作:
1.创建Observer类:
php artisan make:observer YourObserver --model=YourModel
1.将代码添加到要观察的生成事件方法中。
1.通过在EventServiceProvider的 Boot 方法中对要观察的模型调用observe方法来注册Observer,如下所示:
或者,您也可以将Observer注册到应用程序的EventServiceProvider类的
$observers
属性: