我們新增一個功能頁面測試
我們用管理后臺廣告管理這個功能舉例子,他的控制器寫的是: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
然后這個功能頁面就添加好了,可以訪問試試
如果是后臺的話 需要在權限管理中新增權限,并且 在用戶組中設置訪問