Database and models
在這裡,我們使用了:Zend\Db\TableGateway\TableGateway 做為對資料庫中的資料表進行新增,查詢,修改以及刪除。
我們使用 MySQL 並透過 PHP 的 PDO 層作為存取資料庫,我們先建立一個名為:zf2tutorial 的資料庫作為資料庫的名稱,接著執行下面的 SQL 檔的指令
The model files
Zend Framework 並沒有提供 Model 之類的 component 原因是因為這部分是我們自己的商業邏輯,我們需要自己寫的
我們建立一個名為 Album.php 並放在 /path/to/project-name/module/Album/src/Album/Model 目錄下
Album.php
在 Album.php 中,就只有一個簡單的 Album class 我們為了要與 Zend\Db 中的 TableGateway 運作正常,因此我們需要實做 exchangeArray() 方法,這個方法可以簡易的從另一個項目設定中去複製一個陣列中的資料,並把資料可以印出在 view 上 (或表單)
我們建立了一個 AlbumTable.php 檔在: /path/to/project-name/module/Album/src/Album/Model 目錄下
AlbumTable.php
其中裡面的方法功能介紹如下:fetchAll 就是得到一個查詢所有 Album 的集合,getAlbum 則是得到某一行的且傳回物件,saveAlbum 則是儲存一行 Album 相關的資料,最後的 deleteAlbum 則是刪除某一行指定的 Album 記錄。
Using ServiceManager to configure the table gateway and inject into the AlbumTable
修改前面的 Module.php,位置在:/path/to/project-name/module/Album/Module.php
接下來要加入有關資料庫登入的驗證資訊,所以我們要分別編輯:/path/to/project-name/config/autoload/global.php 與 /path/to/project-name/config/autoload/local.php
global.php
就是加入 db 資料庫相關的,像這裡就是定義 PDO 的,下面則是加入 servive_manager 與 Zend\Db\Adapter\Adapter 內建操作資料庫有關的。
local.php
則是填入登入 MySQL 的驗證資訊,如帳號與密碼。
Back to the controller
Listing albums
AlbumController.php 前面已經有使用過了,在這裡可以看到一些註解,可以知道加了哪幾行。
index.phtml
下面是有關於視圖 (view) index.phtml 的 code
由 index.phtml 得知:
We always use the escapeHtml() view helper to help protect ourselves from Cross Site Scripting (XSS) vulnerabilities (see http://en.wikipedia.org/wiki/Cross-site_scripting).
我們常會使用 escapeHtml() 來防止跨站腳本的漏洞。
最後,輸入網址:http://localhost/project-name/public/album 就會看到如下的畫面
到這裡就完成了一個簡單的表格列出專輯清單,下一篇我們會介紹:Styling and Translations 樣式與翻譯。