laravel-admin自定义主键的表单编辑
手里有套基于larval-admin的老系统在维护,今天要做点小东西发现其中一张表是用date日期做主键的。然后发现larval-admin自带表单在编辑的这个日期的时候会隐藏主键字段。这就很头疼了,需求是要能改这个主键字段的,只能自己去改造表单form方法。查了下官方论坛给的方法是自定义一个不存在的字段然后根据传参判定是否是编辑模式再接收这个不存在的字段写到表里,代码如下:
<code>
protected function form($creating = false)
{
// 其他的代码....
if ($creating) {
$form->text('gid', 'ID');
}
$form->saving(function ($form) {
$form->input('id', request()->get('gid'));
});
// 其他的代码....
}
public function create(Content $content)
{
return $content
->header('Header')
->description('description')
->body($this->form(true));
}
</code>
在例子里面$creating就是是否在编辑的标识,gid是自定义的字段用于替换编辑id字段,我反复尝试了一下觉得不好用。我更喜欢简单粗暴,思路就是直接自定义一个临时字段并改写name值为主键字段,在提交的时候直接写进去。如下:
<code>
protected function form()
{
// 其他代码......
$js = <<<EOF
$("#test_filed").attr("name","主键字段");
EOF;
Admin::script($js);
$form->date('test_filed','测试字段')->default(request()->path('主键字段'))->required();
$form->saving(function($form){
$form->model()->主键字段 = request()->input('主键字段');
});
// 其他代码......
}
</code>
这样就搞定了,虽然颇有脱裤子放屁的感觉。别人的框架用起来是方便但要个性化定制的时候就很难受了,本着【能跑就行】的态度堆积代码屎山也是无奈之举。
更多>>