【1】URL訪問解析
觀察訪問網頁時的網址,可以得出模塊訪問方法,如下示例:
http://www.abcd.com.cn/phpcms/index.php?m=content&c=index&a=show&id=1
關於此URL解析如下:
m = content 為模塊/模型名稱 位於phpcms/modules/content (必須項)
c = index 為控制器名稱 位於phpcms/modules/content/index.php (必須項)
a = show 為事件名稱 位於phpcms/modules/content/index.php 中的show方法
id = 1 為其他參數 與正常get傳遞參數形式相同
那麼,問題來了!我們經常訪問首頁的網址為:http://www.abcd.com.cn/phpcms/index.php 為什麼沒有m和c的值呢?
這裡解釋一下,系統在沒有指定模塊和控制器的時候,會執行默認的模塊和操作。如上的網址,PHPCMS默認路由會定位到content模塊的index控制器中的init操作。因此與下面的URL結果是相同的:
http://www.abcd.com.cn/phpcms/index.php?m=content&c=index&a=init
系統還支持URL路由的功能,這些都能夠帶來其他的url訪問效果。
其路由文件位於 phpcms\caches\configs\route.php 內容整理如下所示:
1 <?php 2 /** 3 * 路由配置文件 4 * 默認配置為default如下: 5 * 'default'=>array( 6 * 'm'=>'phpcms', 7 * 'c'=>'index', 8 * 'a'=>'init', 9 * 'data'=>array( 10 * 'POST'=>array( 11 * 'catid'=>1 12 * ), 13 * 'GET'=>array( 14 * 'contentid'=>1 15 * ) 16 * ) 17 * ) 18 * 其中“m”為模型,“c”為控制器,“a”為事件,“data”為其他附加參數。 19 * data為一個二維數組,可設置POST和GET的默認參數。 20 * POST和GET分別對應PHP中的$_POST和$_GET兩個超全局變量。 21 * 在程序中你可以使用$_POST['catid']來得到data下面POST中的數組的值。 22 * data中的所設置的參數等級比較低。如果外部程序有提交相同的名字的變量,將會覆蓋配置文件中所設置的值。 23 * 如:外部程序POST了一個變量catid=2那麼你在程序中使用$_POST取到的值是2,而不是配置文件中所設置的1。 24 */ 25 return array( 26 'default'=>array('m'=>'content', 'c'=>'index', 'a'=>'init'), 27 );
為了更具體的理解,簡單實例如下:
1. 在phpcms/modules目錄下,新建一個文件夾,命名為demo,即模塊名為demo
2. 在demo文件夾中,新建一個文本文件,命名為test,修改文件類型為php。用Notepad++打開test文件,編輯內容如下:
1 <?php 2 class test 3 { 4 public function show() 5 { 6 echo "I Love PHPCMS V9."; 7 } 8 } 9 ?>
注意:test.php裡面的內容,必須要用class類的寫法,否則會提示control找不到,即mvc中的c找不到。如果沒有指定a,則調用init方法,如果沒有實現init方法,則會顯示:Action does not exist。
3. 在浏覽器的網址欄輸入:http://localhost/phpcms/index.php?m=demo&c=test&a=show 回車 結果如下圖:
【2】模塊
phpcms V9框架中的模塊,位於phpcms/modules目錄中,每一個目錄稱為一個模塊。即上文URL訪問中的m。
如果需要創建一個模塊,只要在phpcms/modules目錄下創建文件夾並放入你的控制器類就可以了。
【3】控制器
關於控制器類,可以參見文章《phpcms V9 添加模塊》
Good Good Study, Day Day Up.
順序 選擇 循環 總結