2009年11月6日 星期五

PHP Zend Framework ...

真的實戰寫了發現 ... 難怪之前看很多新手教學都看不大懂

真的要實際下去寫了才會知道很多

雖然簡單知道要把內容拆成 Model(M) , View(V) , Controller(C)

不過對於不懂的人寫下去就是不懂啊 囧

但是現在好在有超強淡江學弟的火力支援,總算是嬰兒學走路,踏出成功的第一步了 ...

目前還寫得很醜,運用呼叫 SQL 方式還是直接寫 SQL CODE 沒有用 Zend 的寫法

繼續努力中

再來就是最一開始架起這個 Zend 時,常會有一堆問題

我也還是用前輩寫的 public/index.php 的設定

在這邊補上 ini_set("display_errors",0); 很好用呀

不然很多 undefined 的錯誤,我想我現在先求有再求好吧

幼幼班心得

所有印出的東西或是中文內容養成不要出現在 Controller 的習慣,丟到 view 再做 PHP 判斷
(當然 echo 或是 print 在測試階段會常用:p)

Controller 每個 Action 使用 DB 前都要加上
$db = Zend_Registry::get("db");
嗯 ? 有點麻煩 ... 應該是有其他作法才是

一個 Controller 對映一個 view 的 .html 檔案

譬如 http://localhost/ <-- 先用 virtual host 指向一般 Zend 目錄 http://localhost/public/

http://localhost/test/abc 範例網址

這行 test 就是在 application/views/scripts/ 下面的目錄 /test/

同時也要建一個 TestController.php 在 /application/controllers/ 裡面 (大寫這個我也不確定)

然後在 TestController.php 裡是一堆的 xxxAction 的 function,那個 xxx 就是剛剛範例的 abc

譬如

class TestController extends Zend_Controller_Action{
^^^^目錄名views/scripts/ test(建議小寫)

public function abcAction(){ <-- abc 就代表你要在 test 目錄下有一個 abc.html
不拉不拉開始寫 code
}

}


由於是拆開的,所以 abcAction 寫的東西也不會直接跑到 view 裡的 abc.html

因此要傳變數就要用 $this->view->xxxx=$變數;

這樣在 abc.html 就可以用 $this->xxxx 來接到這個變數

而用 DB 撈出來的陣列

譬如

$result = $db->fetchAll($SQLCODE);

也可以 $this->view->result=$result;

這樣在 abc.html 就可以下 print_r($this->result) 來看看這個陣列的直抓得如何

印出陣列方式就是 $this->result["欄位名"],這樣也是可以滴

感覺上有點礙手礙腳的,但是大概抓到一點點這種寫法的規則了

而要印出內容就是在 view 裡做,譬如

if($this->$由controller傳來的變數=="xxx"){
echo "哇哈哈";
}

這樣就是在 view 中顯示印出來的東西,而 view 中的判斷純粹都只是接值來印出而已

然後 controller 不會印出東西來,就一直丟到 view 去這樣分工合作

那像 get 或 post 就是在 controller 接

$xxx=$this->_request->get('變數名');//controller接到這個get或post變數傳到$xxx
然後再 $this->view->xxx=$xxx; // 再把這個$xxx丟到view裡,view用$this->xxx來接

基本上大概這樣 ... 一個能連資料庫跟頁面接收判斷的大概就出來了 ...

雖然還懂得不多,不過起碼做個留言板就行了 ... 這可是我半個月前覺得不可能的任務

真的要感謝淡江強學弟們的指導

只要撈資料 OK、頁面判斷知道怎麼接變數,基本上要做什麼都行了 ~

然後那個網址看起來 ... 感覺很厲害的樣子!!!(以前我不會的時候)

http://localhost/test/abc/ID/123 (test controller的abc action 裡get變數ID值123)

哇 ... 都沒有問號 ?xxx=xxx&xxx=xxx ... 好高級的寫法 ... XD

對我來說一直是這麼覺得 ... 囧> 見笑了 ~

沒有留言: