真的要實際下去寫了才會知道很多
雖然簡單知道要把內容拆成 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
對我來說一直是這麼覺得 ... 囧> 見笑了 ~
沒有留言:
張貼留言