php开发问题日志——selectpage 使用
最近修改fastadmin的selectpage,想用js动态修改选中值,查找文档,百度搜索都没有结果,有知道的大神可以留言,告诉我方法,不胜感谢。
在找解决方法时,看到一个属性searchField:查询关键字字段。fastadmin中,并没有这个属性,但是原生的有,我找了一下fastadmin的selectpage.js文件,搜索了词条searchField,找到这个地方
SelectPage.prototype.setOption = function (option) {
修改了里面的内容:
SelectPage.prototype.setOption = function (option) {
//use showField to default
//option.searchField = option.searchField || option.showField;
let search_field=option.searchfield || option.searchField || option.showField;
if(Array.isArray(search_field)){
var arr = ['searchField'];
for (var i = 0; i < arr.length; i++) {
option[arr[i]] = this.strToArray(option[arr[i]]);
}
}else{
option.searchField=search_field.split(',');
}
console.log(option);
option.andOr = option.andOr.toUpperCase();
if (option.andOr !== 'AND' && option.andOr !== 'OR') option.andOr = 'AND';
//support multiple field set
然后在view中html中添加了data-searchField="mobile,username,nickname",这样的效果就是可以输入一个关键词,用or搜索三个字段;html代码:
<input id="c-user_id" data-rule="required" data-source="user/user/index" data-params='{"custom[agent_type]":0}' data-field="username"
data-searchField="username,nickname,mobile" class="form-control selectpage" name="row[user_id]" type="text" value="">
控制器的selectpage方法的相关代码:
$logic = $andor == 'AND' ? '&' : '|';
$searchfield = is_array($searchfield) ? implode($logic, $searchfield) : $searchfield;
$searchfield = str_replace(',', $logic, $searchfield);
$word = array_filter(array_unique($word));
if (count($word) == 1) {
$query->where($searchfield, "like", "%" . reset($word) . "%");
} else {
$query->where(function ($query) use ($word, $searchfield) {
foreach ($word as $index => $item) {
$query->whereOr(function ($query) use ($item, $searchfield) {
$query->where($searchfield, "like", "%{$item}%");
});
}
});
从控制器中的代码看,searchfield是可以为数组的;
参数传递的效果:
- earchField[]: username
- searchField[]: nickname
- searchField[]: mobile
同时发送三个搜索字段
本文暂时没有评论,来添加一个吧(●'◡'●)