phpcms v9 建立模組
一.建立一個模組開發流程:
1.建立資料庫和資料表;(沒有資料庫操作可略過)
2.建立模組目錄
3.建立模組控制器類;
4.建立模組類與模組函式;(如果只是簡單的模組可以不必建立)
5.建立模板檔案;
6.執行和除錯。
一、
2.建立模組目錄:分析
phpcms v9框架中的模組,位於phpcms/modules目錄中 每一個目錄稱之為一個模組
如果要建立一個模組,只要在 phpcms/modules 目錄下建立資料夾並放入你的控制器類就可以了。
例如我要開發一個叫做test的模組,那麼首先在 phpcms/modules 目錄下建立資料夾,並將其命名為test。
標準結構:
classes :模組類庫包
function :模組函式庫包
templates:模組模版包 通常放置含許可權控制的控制器模版,也就是後臺模版
如果您的模板有單獨的前臺模板,你需要在phpcms\templates\default下建立一個您的模組目錄來放置前臺模板,"default"為你的風格包名稱,我們預設適用default
一、
3.建立模組控制器類:
在建立模組中我們已經建立好了一個名為“test”的模組,接下來我們繼續為這個模組新增兩個控制器類。
phpcms v9的控制器就是模組的類檔案,位於phpcms/modules/模組/目錄下面。類名成就是檔名+.php,例如一個名為mytest的控制器,那麼他的命名為mytest.php即可。控制器類預設繼承系統的函式庫,可以直接使用。控制器類的類名稱與控制器檔名必須相同。
控制器類檔案包含兩種形式:
1.mytest.php 控制器,前臺瀏覽(不含許可權控制)
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
class mytest {
function __construct() {
}
public function init() {
$var = 'hello world!';
echo $myvar;
}
public function mylist() {
$var = 'hello world!this is a example!';
echo $myvar;
}
}
?>
這個控制器的url訪問方法
index.php?m=test&c=mytest
index.php?m=test&c=mytest&a=mylist
沒有填寫 “a” 的情況下,預設呼叫init方法
2.mytest_admin.php 控制器,後臺管理(含許可權控制)
後臺控制控制器需要載入admin模組下的admin類,並繼承該類。需要注意的是因為你新增的控制器類繼承了其他的類,你要小心你控制器的方法名不要和該類中的方法名一樣了,否則會造成影響,具體請檢視admin類中有哪些方法。
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_app_class('admin','admin',0);
class mytest_admin extends admin {
public function __construct() {
}
public function init() {
$myvar = 'oh,i am phpcmser';
echo $myvar;
}
}
?>
在控制器中增加模板呼叫
phpcms 可以實現完全的模板與程式分離,所以在我們的控制器程式中要載入模板,才可以更友好的顯示出來。
1.載入前臺模板
前臺模板檔案在phpcms\templates\default\模組名稱 目錄中,本示例也就在phpcms\templates\default\test中
載入模板方法如下:
include template('test', 'mytest', 'default');
其中 test為模組名稱 mytest 為模板目錄下模板名稱,default為風格名稱,預設不填為defalut
在上面例子中如果要給mytest.php中init方法載入一個mytest的模板,如下
public function init() {
$var = 'hello world!';
include template('test', 'mytest', 'default');
}
這樣我們通過url訪問該方法的時候也就載入了對應的模板。
2.載入後臺模板
後臺模板檔案在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方法載入一個mytest_admin_list的模板,如下
public function init() {
$myvar = 'oh,i am phpcmser';
include $this->admin_tpl('mytest_admin_list');
}
二:建立資料庫模型類:
資料庫模型位於:phpcms/model/ 目錄下。
資料模型檔案的命名規則建議為資料表名稱+'_model.class.php'
如果在我們的建立的模組中我要使用一個數據庫“test”,首先需要建立一個數據庫模型檔案,檔名稱為'test_model.class.php'
內容如下:
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class test_model extends model {
public function __construct() {
$this->db_config = pc_base::load_config('database');
$this->db_setting = 'default';
$this->table_name = 'test';
parent::__construct();
}
}
?>
注意:
1.資料庫模型類名稱必須與檔名稱相同;
2.$this->db_setting = 'default'為資料庫配置檔案中配置資料庫連結池名稱,預設為default,一般情況下不需要修改。
3.$this->table_name = 'test'為資料表名稱
這樣我們就建立好了一個數據庫模型類。
在模組的控制器中使用
$this->db = pc_base::load_model('test_model');
來載入。
具體如下
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
class mytest {
private $db;
function __construct() {
$this->db = pc_base::load_model('test_model');
}
public function init() {
$result = $this->db->select();
var_dump($result);
}
}
?>
其中$this->db中所支援的方法請參照phpcms/libs/classes/model.class.php中方法