下面在NewsController控制器中添加幾個 Action:
~~~
public function indexAction(){
echo "NewsController indexAction";
exit;
}
public function listAction(){
echo "NewsController listAction";
exit;
}
public function addAction(){
echo "NewsController addAction";
exit;
}
public function editAction(){
echo "NewsController editAction";
exit;
}
public function deleteAction(){
echo "NewsController deleteAction";
exit;
}
~~~
注意:ZF2控制器的action方法都必需為 public 類型,不然ZF2前端控制器可能無法訪問導致出錯。同時應該注意action 的名稱都是動作名+Action組成的,需要注意大寫(如果項目將來是布置在Linux系統的服務器上時這點就顯得尤為重要)。
經過添加以上的代碼就建立了NewsController 控制器中建立了5個不同的action,在此就可以利用這5個不同的action 來實現5個不同的功能。下面說明一下上面添加的5個 action 的主要作用,indexAction 為控制器的默認action ;listAction 用來實現新聞列表功能;addAction 用來實現添加新聞的功能;editAction 用來實現修改/編輯新聞功能;deleteAction 用來實現刪除新聞的功能。
有了控制器及控制器的action,那么是否就可以直接通過 `http://localhost/news` 來對NewsController進行訪問了呢?答案是否定的。在前面的章節有提到過關于路由的概念或相關的內容,ZF2 中的所有控制的訪問都需要先通過對控制器路由設定才能進行使用,沒有經過路由設置的控制器就相當于一部不會割草的割草機;這種路由的設定也體現了ZF2中強大的路由功能,你可以將控制器的訪問路徑配置成各種各樣的形式,這種路由的設置模式區別于傳統PHP網址路徑的訪問形式,傳統的訪問地址往往都是包括了文件名,而ZF2的路由配置規則則可完全將文件名隱藏起來。那下面就開始對 NewsController 控制器進行路由的進行設定。
找到模塊配置文件 `/module/Application/config/module.config.php`,打開文件并找到 router-->routes-->application 節點的未尾,在此節點的末尾添加如下代碼:
~~~
'news'=>array(
'type'=>'segment',
'options'=>array(
'route'=>'/news[/:action]',
'constraints'=>array(
'action'=>'[a-zA-Z]'
),
'defaults'=>array(
'controller'=>'Application\Controller\News',
'action'=>'index'
),
),
),
~~~
注意:請確認好 application 與 news 的節點是處于同一層次
下面對 NewsController 路由配置進行解釋:
* news=>array() 表示一個路由節點,此節點的路由名稱為 news
* news-->type=>segment 表示路由使用 segment 模式進行解析
* news-->options=>array() 表示路由配置選項
* news-->options-->route => /news[/:action] 表示路由地址
* news-->options-->constraints=>array() 對路由約束規則,其實就是對路由的正則匹配
* news-->options-->constraints-->action 表示 action 的匹配規則
* news-->defaults 表示路由默認訪問的配置
* news-->defaults-->controller 表示默認使用的控制器
* news-->defaults-->action 表示控制器默認使用的action
現在可以通過
~~~
http://localhost/news 訪問到 indexAction
http://localhost/news/list 訪問到 listAction
http://localhost/news/add 訪問到 addAction
http://localhost/news/edit 訪問到 editAction
http://localhostnews/delete 訪問到 deleteAction
~~~
通過以上的幾個環節便完成了ZF2中的控制器的創建和使用,由此可見ZF2的使用比較ZF1更為復雜,也可以看出路由的設置及訪問方式更加的靈活。在ZF2框架中控制器、視圖、模型 是缺一不可的一個整體體系,缺失任何一個都將損害ZF2的完全性;致以本章節前面提到的要實現控制器中的增、刪、改 的功能將會在視圖及模型章節中加以補充。
- 序言
- 第1章 Zend Framework2 簡介
- 1.1 Zend Framework2 簡介
- 1.2 下載安裝
- 1.3 搭建開發環境
- 第2章 創建ZF2項目
- 2.1 新建一個項目
- 2.2 配置網站
- 2.3 偽靜態 .htaccess文件
- 2.4 添加啟動/入口文件
- 2.5 添加全局配置文件
- 2.6 添加自動加載文件 init_autoloader.php
- 2.7 IndexController 控制器
- 第3章 創建模塊文件
- 3.1 Module 文件
- 3.2 module.config 文件
- 3.2.1 router 路由配置
- 3.2.2 controllers控制器配置
- 3.2.3 view_manager 視圖管理器
- 3.2.4 service_manager 服務管理器
- 3.2.5 translator 翻譯器
- 3.2.6 navigation 導航條
- 第4章 創建控制器
- 4.1 控制器簡介
- 4.2 新建控制器
- 4.3 添加控制器的Action
- 第5章 創建視圖模板
- 5.1 創建模板
- 5.2 模板配置
- 5.3 編寫布局和錯誤異常模板
- 5.4 編寫Action 對應的模板文件
- 5.5 訪問 IndexAction
- 第6章 創建模型
- 6.1 ORM 對象映射法
- 6.2 使用分頁導航
- 6.3 自定模型
- 6.4 章節總結
- 第7章 實例應用
- 7.1 建立Album 模塊
- 7.2 添加模塊文件
- 7.3 添加模塊配置文件
- 7.4 創建數據表 album
- 7.5 添加模型文件
- 7.6 添加表單 AlbumForm
- 7.7 添加控制器 AlbumController
- 7.8 添加模板文件
- 第8章 用戶認證
- 8.1 建立數據表
- 8.2 新建認證類
- 8.3 引用認證類
- 第9章 結束語