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()]);
}
}
}