ホームページ >バックエンド開発 >PHPチュートリアル >phpcms V9 追加モジュール (転送)、phpcmsv9_PHP チュートリアル
転載元: http://www.cnblogs.com/Braveliu/p/5101345.html
phpcms用モジュール作成の開発手順
【1】作成モジュール ディレクトリ
これまでの学習を通じて、phpcms V9 フレームワークのモジュールは phcms/modules ディレクトリにあり、各ディレクトリはモジュールと呼ばれることがわかっています。
モジュールを作成したい場合は、phpcms/modules ディレクトリの下にフォルダーを作成し、その中にコントローラー クラスを置きます。
たとえば、test というモジュールを開発したい場合は、まず phpcms/modules ディレクトリにフォルダーを作成し、test という名前を付けます。
他のモジュールの構造を観察すると、テストモジュールの標準構造は通常次のようになる必要があることがわかります:
classes はモジュールクラスライブラリパッケージです
functions はモジュール関数ライブラリパッケージです
templatesモジュール テンプレート パッケージで、通常はアクセス許可制御用のコントローラー テンプレートがバックグラウンド テンプレートを含みます。
テンプレートにカスタマイズされたフロントエンド テンプレートがある場合は、phpcmstemplatesdefault ディレクトリにモジュール名のディレクトリを作成して、フロントエンド テンプレートを配置する必要があります。「デフォルト」は、デフォルトで使用されるスタイル パッケージの名前です。デフォルト。
【2】モジュールコントローラークラスの作成
前のステップで test という名前のモジュールを作成しました。 次に、このモジュールに 2 つのコントローラー クラスを追加します。
phpcms V9 のコントローラーは、phpcms/modules/モジュール名/ ディレクトリにあるモジュールのクラス ファイルです。クラス ファイルの名前は、コントローラー名 + .php です。たとえば、コントローラーの名前が mytest の場合は、mytest.php という名前を付けることができます。コントローラー クラスはデフォルトでシステムの関数ライブラリを継承し、直接使用できます。
コントローラークラスのクラス名とコントローラーファイル名は同じである必要があります。
Controller クラス ファイルには 2 つの形式が含まれます:
1. フロントエンド ブラウジング (権限制御を除く)、mytest.php コントローラー
phpcms/modules/test ディレクトリに新しいテキスト ファイルを作成し、mytest という名前を付けて変更します。ファイルのタイプは php です。Notepad++ を使用して内容を開いて編集します:
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 ?>
実はこのコントローラーのURLアクセス方法は以前紹介したことがありますので、「phpcms V9 MVCモードとURLアクセス解析」を参照してください
http://www.abcd.com.cn/phpcms/index.php?m=test&c=mytest は
と同等ですhttp://www.abcd.com.cn/phpcms/index.php?m=test&c=mytest&a=init。
「a」値が入力されていない場合、デフォルトで init メソッドが呼び出されます。
どうしてこうなったの? 「phpcms V9 MVC モードと URL アクセス分析」をもう一度読んでください。
2. バックエンド管理 (権限制御を含む)、mytest_admin.php コントローラー
バックグラウンド コントローラーは、admin モジュールの下に admin クラスをロードし、このクラスを継承する必要があります。なお、追加したコントローラクラスは他のクラスを継承するため、コントローラクラスのメソッド名がクラス内のメソッド名と一致しないと影響が出る可能性があるので注意してください。詳細については。
phpcms/modules/test ディレクトリで、新しいテキスト ファイルを作成し、mytest_admin という名前を付け、ファイルの種類を php に変更し、Notepad++ で開き、内容を次のように編集します。
リーリー
コントローラーにテンプレート呼び出しを追加
phpcms はテンプレートとプログラムを完全に分離できるため、よりわかりやすく表示できるようにテンプレートをコントローラー プログラムにロードする必要があります。
1. フロントエンドテンプレートをロードします
フロントエンド テンプレート ファイルは、phpcmstemplatesdefault モジュール名のディレクトリにあります。この例も phpcmstemplatesdefaulttest にあります。
テンプレートをロードする方法は次のとおりです:
リーリー
このうち、testはモジュール名、mytestはテンプレートディレクトリ内のテンプレート名、defaultはスタイル名、defaultはdefaultです。上記の例で、mytest テンプレートを mytest.php の init メソッドにロードする場合 (代わりに、コンテンツ モジュールの下にindex.html をコピーすることもできます)、次のようにします (テンプレート名は Index になります):
リーリー
この時、URL経由でメソッドにアクセスすると、対応するテンプレートが読み込まれます。2. 背景テンプレートをロードします
背景テンプレート ファイルは phpcmsmodules モジュール名 templates ディレクトリにあります。この例も phpcmsmodulestesttemplates にあります。
テンプレートをロードする方法は次のとおりです:
リーリーここで、mytest_admin_list は phpcmsmodulestesttemplates の mytest_admin_list.tpl.php です。
注:ここのテンプレートにはサフィックスとして .tpl.php が必要です 上記の例で、mytest_admin_list テンプレートを mytest_admin.php の init メソッドにロードする場合は、次のようにします。 リーリー
テンプレート パーツをロードするには、システム フレームワークのソース コード コンテンツ モジュール phpcmsmodulescontent content.php ファイルの実装を参照することもできます。【3】データベースモデルクラスの作成
この時点で、各モジュールのデータベース モデルが phpcms/model/ ディレクトリにあることは明らかです。
数据模型文件的命名规则建议为:数据表名称 + '_model.class.php'
如果在我们的创建的模块中我要使用一个数据库“test”,首先需要建立一个数据库模型文件,文件名称为'test_model.class.php'
内容如下:
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 ?>
书写数据库模型类注意一下几点:
1. 数据库模型类名称必须与文件名称相同。
2. 必须继承与数据库模型基类model。
3. $this->db_setting = 'default'为数据库配置文件中配置数据库链接池名称,默认为default,一般情况下不需要修改。
4. $this->table_name = 'test'为数据表名称。
这样我们就建立好一个数据库模型类。那么,怎么使用呢?
在模块的控制器中使用(加载方式):
$this->db = pc_base::load_model('test_model');
具体如下:
1 db->select(); // 调用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 中方法。