想把admin表中的名字加入到下拉列表中,遇到几个问题:
数据表字段是 admin_id 但是生成后没有对应字段;
列表页显示的仍然是 admin_id 的id数字;
自己给 add.html 和 edit.html 增加 selectpage后,管理员可以调用了,其他权限不行;
解决方法:
1. 修改controller的index,增加查询后过滤修改数值;
shop.php
//最前面先加上这一句,用来表示访问权限;
protected $noNeedRight = ['get_admin'];
public function index()
{
//设置过滤方法
$this->request->filter(['strip_tags', 'trim']);
if (false === $this->request->isAjax()) {
return $this->view->fetch();
}
//如果发送的来源是 Selectpage,则转发到 Selectpage
if ($this->request->request('keyField')) {
return $this->selectpage();
}
[$where, $sort, $order, $offset, $limit] = $this->buildparams();
$list = $this->model
->where($where)
->order($sort, $order)
->paginate($limit);
$admd = new \app\admin\model\Admin;
$adarr = $admd->column('nickname','id');
foreach($list as &$item){
$item->admin_id = $adarr[$item->admin_id];
$item->createtime =$item->createtime==null?$item->createtime:date('Y-m-d H:i:s',$item->createtime);
$item->updatetime =$item->updatetime==null?$item->updatetime:date('Y-m-d H:i:s',$item->updatetime);
}
$result = ['total' => $list->total(), 'rows' => $list->items()];
return json($result);
} 2. 再增加一个查询,直接查admin表,绕过权限验证;
shop.php
public function get_admin()
{
$admd = new \app\admin\model\Admin;
$adarr = $admd->select();
$retarr = ['list' => $adarr, 'total' => count($adarr)];
return json($retarr);
} 3. 修改add.html 和 edit.html;
add.html
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Admin_id')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-Admin_id" data-rule="required" data-source="shop/get_admin" class="form-control selectpage" name="row[Admin_id]" data-primary-key="id" data-field="nickname" type="text" value="">
</div>
</div> edit.html
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Admin_id')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-Admin_id" data-rule="required" data-source="shop/get_admin" class="form-control selectpage" name="row[Admin_id]" data-primary-key="id" data-field="nickname" type="text" value="{$row.admin_id|htmlentities}">
</div>
</div> 4. 微调js;
主要删掉不用的首页的字段;
豫公网安备41077102000113