ホームページ >php教程 >php手册 >phpcms V9 追加モジュール (転送)、phpcmsv9

phpcms V9 追加モジュール (転送)、phpcmsv9

WBOY
WBOYオリジナル
2016-07-06 14:24:261085ブラウズ

phpcms V9 モジュール追加(再投稿)、phpcmsv9

転載元: 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. 数据库模型类名称必须与文件名称相同。

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 中方法。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。