AdminController.php位于app/下。此控制器基类是所有应用后台管理控制器的父类,继承了BaseController控制器。其结构如下:
namespace app; use Webman\Http\Request; class AdminController extends BaseController { /** * 数据库实例 * @var BaseModel */ protected $model; /** * 控制器/类名 * @var string */ public $controller = null; /** * 控制器方法 * @var string */ public $action = null; /** * 控制器/方法名 * @var string */ public $method = null; /** * 获取模板 * @access protected * @var string */ public $theme = 'default'; /** * 权限验证类 * @var object */ public $auth = null; protected $pk = 'id'; protected $captchaKey = 'captchaAdmin'; /** * 构造函数 */ public function __construct() { //只有在启动时执行 parent::__construct(); } public function adminInfo($key = null){ $admin = request()->session()->get(SESSION_ADMIN); return $key!==null ? $admin[$key] : $admin; } /** * 设置一条或者多条数据的状态 * @Author fudaoji<fdj@kuryun.cn> */ public function setStatus() { $ids = input('ids'); $status = input('status'); if (empty($ids)) { return $this->error('请选择要操作的数据'); } $ids = (array) $ids; if($status == 'delete'){ if($this->model->where([[$this->pk, 'in', $ids]])->delete()){ return $this->success('删除成功'); }else{ return $this->error('删除失败'); } }else{ $arr = []; $msg = [ 'success' => '操作成功!', 'error' => '操作失败!', ]; $data['status'] = abs(input('val', 0) - 1); foreach($ids as $id){ $data[$this->pk] = $id; $arr[] = $data; } if($this->model->saveAll($arr)){ return $this->success($msg['success']); }else{ return $this->error($msg['error']); } } } /** * 保存数据 * @param string $jump * @param array $data * @return mixed */ public function savePost(Request $request, $jump = '', $data = []){ $post_data = $data ? $data : request()->post(); try { if(empty($post_data[$this->pk])){ $res = $this->model->create($post_data); }else { $res = $this->model->update($post_data); } if($res){ return $this->success("操作成功!", $jump); }else{ return $this->error("未修改数据无需提交", null, ['token' => token()]); } }catch (\Exception $e){ $msg = $e->getMessage(); return $this->error($msg,null, ['token' => token()]); } } }