laravel-admin select选框值过多的办法
{
"id": 9,
"text": "xxx"
},
{
"id": 21,
"text": "xxx"
},
…]
这里重点来了,ajax的异步数据的键必须是id和text,找了半天也不知道方法也没发现怎么改键值,然后我发现了api的例子…
没搞懂paginate的我又看了一遍手册,并没有发现下面的用法,猜测第二个参数的数组是所要筛选出的字段的名称,果然没错,然后后面那个 "as text"又被我华丽丽的无视了,结果可想而知,调了半天始终搜不到数据,也没有任何报错,然后才想起来api返回的数据格式必须是键名 id和text,而修改键名正是使用 字段名 + as + 别名的形式,将paginate方法的第二个参数数组使用正确的别名重构之后,select正常显示了,所以正确的做法应该是下面:
$form->select('user_id')->options(function ($id) {
$user = User::find($id);
if ($user) {
return [$user->id => $user->name];
}
})->ajax('/admin/api/users');
})->ajax('/admin/api/users');
{
$q = $request->get('q');
return User::where('name', 'like', "%$q%")->paginate(null, ['填入option的value属性的字段 as id', '填入两个option标签之间的字段 as text']);
}
}
然鹅,今天我又一次用form的ajax方法的时候,发现其实不用那么写也可以!
如图,ajax方法(也就是从外部接收数据的option方法)的第二个和第三个参数可以自定义上面默认的id和text的键值,如图他们的默认值就是id和text,像我这个功能(用户选择)这两个参数直接改成从数据库获取的用户id和用户姓名字段就可以了。
"total": 4,
"per_page": 15,
"current_page": 1,
"last_page": 1,
"next_page_url": null,
"prev_page_url": null,
"from": 1,
"to": 3,
"data": [
{
"id": 9,
"text": "xxx"
},
{
"id": 21,
"text": "xxx"
},
{
"id": 42,
"text": "xxx"
},
{
"id": 48,
"text": "xxx"
}
]
}