由于你的功能很簡單,隨便用幾個(gè)類似于table的列表網(wǎng)頁就行了,給你個(gè)后臺(tái)模板網(wǎng)頁,慢慢看 相信有你喜歡的。
在隨縣等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需搭建網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè)公司,隨縣網(wǎng)站建設(shè)費(fèi)用合理。
后臺(tái)模板網(wǎng)址:
【1】創(chuàng)建模塊目錄
通過前面的學(xué)習(xí),我們已經(jīng)知道phpcms V9框架中的模塊位于phcms/modules目錄中,每一個(gè)目錄稱之為一個(gè)模塊。
如果要?jiǎng)?chuàng)建一個(gè)模塊,只要在 phpcms/modules 目錄下創(chuàng)建文件夾并放入你的控制器類就可以了。
例如我要開發(fā)一個(gè)叫做test的模塊,那么首先在 phpcms/modules 目錄下創(chuàng)建文件夾,并將其命名為test。
觀察其他模塊的結(jié)構(gòu),可知test模塊的標(biāo)準(zhǔn)結(jié)構(gòu)通常應(yīng)該也是這樣的:
classes 為模塊類庫包
functions 為模塊函數(shù)庫包
templates 為模塊模板包,通常放置含有權(quán)限控制的控制器模板,也就是后臺(tái)模板。
如果你的模板有自定義的前臺(tái)模板,你需要在phpcms\templates\default目錄下創(chuàng)建一個(gè)你的模塊名目錄來放置前臺(tái)模板,“default”為你的風(fēng)格包名稱,我們默認(rèn)是用default。
【2】創(chuàng)建模塊控制器類
上一步,我們已經(jīng)創(chuàng)建好了一個(gè)名為test的模塊,接下來我們繼續(xù)為這個(gè)模塊添加兩個(gè)控制器類。
phpcms V9 的控制器就是模塊的類文件,位于phpcms/modules/模塊名/目錄下面。類文件名稱就是控制器名+.php,例如一個(gè)名為mytest的控制器,那么它的命名為mytest.php即可??刂破黝惸J(rèn)繼承系統(tǒng)的函數(shù)庫,可以直接使用。
控制器類的類名稱與控制器文件名必須相同。
控制器類文件包含兩種形式:
1.前臺(tái)瀏覽(不含權(quán)限控制),mytest.php 控制器
在phpcms/modules/test 目錄下,新建文本文件,命名為mytest,修改文件類型為php, 用Notepad++打開編輯內(nèi)容為:
1 ?php
2 defined('IN_PHPCMS') or exit('No permission resources.');
3 class mytest
4 {
5 function __construct(){}
6 public function init()
7 {
8 $myvar = 'hello world!';
9 echo $myvar;
10 }
11 public function mylist()
12 {
13 $myvar = 'hello world! This is an example!';
14 echo $myvar;
15 }
16 }
17 ?
其實(shí),這個(gè)控制器的URL訪問方法前面已經(jīng)介紹過,請參見《phpcms V9 MVC模式與URL訪問解析》
;c=mytest等價(jià)于
;c=mytesta=init。
沒有填寫“a”值的情況下,默認(rèn)調(diào)用init方法。
為什么這樣子?請把《phpcms V9 MVC模式與URL訪問解析》再讀一遍。
2.后臺(tái)管理(含權(quán)限控制),mytest_admin.php 控制器
后臺(tái)控制器需要加載admin模塊下的admin類,并繼承該類。需要注意的是因?yàn)樘砑拥目刂破黝惱^承了其它的類,要小心控制器類的方法名不要和該類中的方法名一樣了,否則會(huì)造成影響,具體請查看admin類中有哪些方法。
在phpcms/modules/test 目錄下,新建文本文件,命名為mytest_admin,修改文件類型為php, 用Notepad++打開編輯內(nèi)容為:
1 ?php
2 defined('IN_PHPCMS') or exit('No permission resources.');
3 pc_base::load_app_class('admin','admin',0);
4 class mytest_admin extends admin
5 {
6 public function __construct() {}
7 public function init()
8 {
9 $myvar = 'oh,i am phpcmser';
10 echo $myvar;
11 }
12 }
13 ?
在控制器中增加模板調(diào)用
phpcms 可以實(shí)現(xiàn)完全的模板與程序分離,所以在我們的控制器程序中要加載模板,才可以更友好的顯示出來。
1.加載前臺(tái)模板
前臺(tái)模板文件在phpcms\templates\default\模塊名稱的目錄中,本示例也就在phpcms\templates\default\test中。
加載模板方法如下:
1 // 加載模板方法:
2 include template('test', 'mytest', 'default');
其中,test為模塊名稱,mytest為模板目錄下模板名稱,default為風(fēng)格名稱,默認(rèn)為default。
在上面例子中如果要給mytest.php中init方法加載一個(gè)mytest的模板(可以拷貝content模塊下的index.html作為替代),如下(所以模板名稱為index):
1 public function init()
2 {
3 $myvar = 'hello world!';
4 echo $myvar;
5 include template('test', 'index');
6 }
這時(shí),當(dāng)我們再通過URL訪問該方法的時(shí)候也就加載了對應(yīng)的模板。
2.加載后臺(tái)模板
后臺(tái)模板文件在phpcms\modules\模塊名稱\templates 目錄中,本示例也就在phpcms\modules\test\templates中
加載模板方法如下:
// 加載模板方法:
include $this-admin_tpl('mytest_admin_list');
其中mytest_admin_list為phpcms\modules\test\templates中mytest_admin_list.tpl.php。
注意:此處模板必須以.tpl.php 作為后綴
在上面例子中如果要給mytest_admin.php中init方法加載一個(gè)mytest_admin_list的模板,如下:
1 public function init()
2 {
3 $myvar = 'oh,i am phpcmser';
4 echo $myvar;
5 include $this-admin_tpl('mytest_admin_list');
6 }
加載模板部分內(nèi)容也可以參見系統(tǒng)框架源碼content模塊 phpcms\modules\content content.php文件的實(shí)現(xiàn)。
【3】創(chuàng)建數(shù)據(jù)庫模型類
至此,已經(jīng)明確,各模塊的數(shù)據(jù)庫模型位于:phpcms/model/ 目錄下。
數(shù)據(jù)模型文件的命名規(guī)則建議為:數(shù)據(jù)表名稱 + '_model.class.php'
如果在我們的創(chuàng)建的模塊中我要使用一個(gè)數(shù)據(jù)庫“test”,首先需要建立一個(gè)數(shù)據(jù)庫模型文件,文件名稱為'test_model.class.php'
內(nèi)容如下:
1 ?php
2 defined('IN_PHPCMS') or exit('No permission resources.');
3 pc_base::load_sys_class('model', '', 0);
4 class test_model extends model
5 {
6 public function __construct()
7 {
8 $this-db_config = pc_base::load_config('database');
9 $this-db_setting = 'default';
10 $this-table_name = 'test';
11 parent::__construct();
12 }
13 }
14 ?
書寫數(shù)據(jù)庫模型類注意一下幾點(diǎn):
1. 數(shù)據(jù)庫模型類名稱必須與文件名稱相同。
2. 必須繼承與數(shù)據(jù)庫模型基類model。
3. $this-db_setting = 'default'為數(shù)據(jù)庫配置文件中配置數(shù)據(jù)庫鏈接池名稱,默認(rèn)為default,一般情況下不需要修改。
4. $this-table_name = 'test'為數(shù)據(jù)表名稱。
這樣我們就建立好一個(gè)數(shù)據(jù)庫模型類。那么,怎么使用呢?
在模塊的控制器中使用(加載方式):
$this-db = pc_base::load_model('test_model');
具體如下:
1 ?php
2 defined('IN_PHPCMS') or exit('No permission resources.');
3 class mytest
4 {
5 private $db;
6 function __construct()
7 {
8 $this-db = pc_base::load_model('test_model'); // 加載數(shù)據(jù)庫模型
9 }
10 public function init()
11 {
12 $myvar = 'hello world!';
13 echo $myvar;
14 include template('test', 'index');
15 $result = $this-db-select(); // 調(diào)用select方法
16 var_dump($result);
17 }
18 public function mylist()
19 {
20 $myvar = 'hello world! This is an example!';
21 echo $myvar;
22 }
23 }
24 ?
其中$this-db中所支持的方法請參照父類 phpcms/libs/classes/model.class.php 中方法。
先建立數(shù)據(jù)表并插入數(shù)據(jù)
這里假設(shè)已經(jīng)存在user表,并且有一條數(shù)據(jù)id:1,name:admin
那么讀取這個(gè)數(shù)據(jù)的過程是
$data = M('User')-select();$this-assign('user',$data);
模板中的調(diào)取代碼是volist name="user" id="v" 用戶名:{$v.name} ID:{$v.id}/volist