🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
我们新增一个功能页面测试 我们用管理后台广告管理这个功能举例子,他的控制器写的是:Ad/index 找到目录app\admin\controller\Ad.php 打开这个文件,看看代码: ~~~ <?php //这个文件内容挺全的,我们只罗列一部分作为解释说明 namespace app\admin\controller; //命名空间 use think\Db; //用到tp内置的数据库方法 use think\Request; //用到tp内置的处理请求方法(post和get) use think\Controller; //用到tp的控制器方法 ~~~ 这个头部引入我们可以直接复制到新文件 新文件的文件名,需要参考Ad.php这样的命名,第一个大写 接着往下看: ~~~ class Ad extends Common //定义一个类继承公共类 { //初始化方法,这个在公共类里面,具体去查可以看到,这里初始化会验证管理员是否登陆 public function _initialize(){ parent::_initialize(); } ~~~ 那么我们依旧照猫画虎,写个My.php 开头应该是: ~~~ <?php //这个文件内容挺全的,我们只罗列一部分作为解释说明 namespace app\admin\controller; //命名空间 use think\Db; //用到tp内置的数据库方法 use think\Request; //用到tp内置的处理请求方法(post和get) use think\Controller; //用到tp的控制器方法 class My extends Common //定义一个类继承公共类 { //初始化方法,这个在公共类里面,具体去查可以看到,这里初始化会验证管理员是否登陆 public function _initialize(){ parent::_initialize(); } ~~~ 好了,继续看Ad.php下面的代码 ~~~ //广告列表 public function index(){//index函数 访问这个的控制器就是 Ad/index 即广告管理的那个页面 if(request()->isPost()) {//如果页面有post请求 $key = input('post.key');//接收post请求中的key 同 $_POST['key'] $this->assign('testkey', $key);//把key值给到testkey里面,页面就可以调用 $page =input('page')?input('page'):1;//分页,tp内置 照抄 $pageSize =input('limit')?input('limit'):config('pageSize');//分页,tp内置 照抄 //查询开始 注意修改数据库 表名 和字段 $list = Db::table(config('database.prefix') . 'ad')->alias('a') ->join(config('database.prefix') . 'ad_type at', 'a.type_id = at.type_id', 'left') ->field('a.*,at.name as typename') ->where('a.name', 'like', "%" . $key . "%") ->order('a.sort') ->paginate(array('list_rows'=>$pageSize,'page'=>$page)) ->toArray(); foreach ($list['data'] as $k=>$v){ //将数据库里面的时间戳进行转化 $list['data'][$k]['addtime'] = date('Y-m-d H:s',$v['addtime']); } //返回数据 供页面调用 return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; } return $this->fetch();//生成页面,fetch里面为空即调用view里面的index.html模版 如果是test.html可以写成 fetch('test') } //下面是增删改查了 不做解释了 } ~~~ 我们需要创建一个数据表,命名为my 字段先写三个吧 id int 11 自动递增 name varchar 255 addtime int 11 给里面加点数据 那么我们写的My.php应该如下: ~~~ <?php //这个文件内容挺全的,我们只罗列一部分作为解释说明 namespace app\admin\controller; //命名空间 use think\Db; //用到tp内置的数据库方法 use think\Request; //用到tp内置的处理请求方法(post和get) use think\Controller; //用到tp的控制器方法 class My extends Common //定义一个类继承公共类 { //初始化方法,这个在公共类里面,具体去查可以看到,这里初始化会验证管理员是否登陆 public function _initialize(){ parent::_initialize(); } //广告列表 public function index(){//index函数 访问这个的控制器就是 Ad/index 即广告管理的那个页面 if(request()->isPost()) {//如果页面有post请求 $key = input('post.key');//接收post请求中的key 同 $_POST['key'] $this->assign('testkey', $key);//把key值给到testkey里面,页面就可以调用 $page =input('page')?input('page'):1;//分页,tp内置 照抄 $pageSize =input('limit')?input('limit'):config('pageSize');//分页,tp内置 照抄 //查询开始 注意修改数据库 表名 和字段 不做多表查询了 $list = Db::table(config('database.prefix') . 'my') ->where('name', 'like', "%" . $key . "%") ->paginate(array('list_rows'=>$pageSize,'page'=>$page)) ->toArray(); foreach ($list['data'] as $k=>$v){ //将数据库里面的时间戳进行转化 $list['data'][$k]['addtime'] = date('Y-m-d H:s',$v['addtime']); } //返回数据 供页面调用 return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1]; } return $this->fetch();//生成页面,fetch里面为空即调用view里面的index.html模版 如果是test.html可以写成 fetch('test') } //下面是增删改查了 不做解释了 } ~~~ 那么我们的控制器方法就是 My/index 还需要在view里面新增文件夹 My 里面复制个 ad里面的index.html 然后这个功能页面就添加好了,可以访问试试 如果是后台的话 需要在权限管理中新增权限,并且 在用户组中设置访问