我们新增一个功能页面测试
我们用管理后台广告管理这个功能举例子,他的控制器写的是: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
然后这个功能页面就添加好了,可以访问试试
如果是后台的话 需要在权限管理中新增权限,并且 在用户组中设置访问