CakePHP 總算最近有花時間好好玩一下, 來做個一連串的筆記吧~
首先要使用 CakePHP 前, 第一步先了解何謂 MVC(Model-view-controller):
- Model: 檢查資料型態/驗證, 與 DB 溝通(儲存/查詢) 等.
- Controller: 程式的流程, 商業邏輯等. 是 Model 與 View 的中間層
- View: 頁面瀏覽, 使用者看到的頁面就是這邊.
再來就是下載 CakePHP 來安裝看看囉~
註: 此篇為 CakePHP 1.1.x 版, 1.2.x 以上的, 可能要做些微調整.
CakePHP 安裝
官方網站: CakePHP : The PHP Rapid Development Framework
下載後, 直接解壓縮可見如下(1.1.xx 版) 三個目錄:(tar zxvf cake_1.1.18.5850.tar.gz)
- app: 自己寫的程式放在這邊.
- cake: Cake的核心函式庫, 升級的話, 只需要將此目錄的程式覆蓋掉即可.(此目錄的東西都不應該去碰他)
- vendors: 放置其它外部函式庫的地方.
- docs: 就基本說明文件等.
再來主要看的就是 app 的目錄內容:(下述參考自: CakePHP 使用手冊+留言板(繁體中文版) - 基礎觀念)
- config: DB/ACL 等設定檔
- controllers: Controllers 控制頁面流程, 裡面檔名都會是 TABLEs_controller.php
- components: 完整的元件(Components)放這邊.
- index.php: 此隻會可以把 app 當 DocumentRoot, 不然直接將 DocumentRoot 指到 app/webroot 去也可以.
- models: Models 與 DB 溝通的程式.
- plugins: Plugins
- tmp: 暫存資料
- vendors: 放置其它外部函式庫的地方
- views: Views
- elements: Element 比較小的 view 模組
- errors: 自訂的錯誤回報網頁
- helpers: Helpers
- layouts: 網頁頁面的預設 Layout(.thtml)(ex: default.thtml, 如果頁面沒有任何 template, 預設會 load default.thtml), cake 1.2 => default.ctp(檔名改用ctp)
- pages: 固定內容的View
- 註: 其它目錄: 如果有自己的 view modules, 就會在這邊另外建立, 預設目錄會是: TABLEs(TABLE NAME + 複數)
- webroot: 程式的 DocumentRoot
- css
- files
- img
- js
解壓縮完第一個要設的是 app/tmp 的目錄, 懶人設法是 chmod 777 app/tmp 即可, 如果此資料夾會有多人一起使用, 可以考慮把要一起寫的人加入 www-data Group(Debian) 中, 然後 chown -R www-data:www-data *
, 再到 cake 根目錄跑下面兩行:
sudo find . -type d -exec chmod 775 {} ";"
sudo find . -type f -exec chmod 664 {} ";"
這樣子基本上就可以了, 主要有幾點要記得的:
- Module: 檔案命名用 單數, ex: modules/post.php
- Controller: 檔案命名用 複數, 並要加 _controoler, ex: controllers/posts_controller.php
- Views 要建目錄, 且 目錄命名用 複數, 裡面的檔案都是 .thml 結尾, 目錄裡的檔案命名要跟 Module function 對應, ex: views/posts/index.thtml (modules/post.php 要有 function index())
預設在寫的時後, 會發現 template 都是固定有 CakeXXX 的, 然後又找不到要去哪邊改, 主要是因為 views/layouts/default.thtml 造成的, 此檔案不存在的話, 不知道會去哪抓預設值, 所以可以跑下面的指令, 先把 default.thtml 複制一份, 就可以改 default.thtml 來做自己的頁面囉~
cp ../cake/libs/view/templates/layouts/default.thtml views/layouts/default.thtml (在 app 目錄下這樣子做, 從 layouts cp default 的 template 過來)
因為 views 都是 *.thtml, 所以 vim 也設定一下, 讓 *.thtml 跟解析 php 一樣的顏色, 只要 vim ~/.vim/filetype.vim, 內容如下:
" my filetype file
if exists("did_load_filetypes")
finish
endif
augroup filetypedetect
au! BufRead,BufNewFile *.thtml setfiletype php
au! BufRead,BufNewFile *.ctp setfiletype php
au! BufRead,BufNewFile *.inc setfiletype php
augroup END
上述步驟快速重點整理
- tar zxvf cake_1.1.18.5850.tar.gz
- mv cake* cakephp
- chmod 777 cake/tmp
- mv cakephp /var/www
Apache VirtualHost 設定
假設目錄是放在 /var/www/cakephp
NameVirtualHost *
ServerAdmin webmaster@localhost
ServerName student.localhostDocumentRoot /var/www/cakephp/app/webroot
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Options FollowSymLinks
AllowOverride all
Allow from all
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
這樣子基本的環境設定, 和開發環境就大概完成了, 晚點再來寫下一步該怎麼做~
留言列表