/* /app/config/database.php */
var $default = array('driver' => 'mysql', 'connect' => 'mysql_connect', 'host' => 'localhost', 'login' => 'NAME', 'password' => 'PASSWORD', 'database' => 'cake', 'prefix' => '', 'encoding' => 'utf8'); // 請注意這一行!在 app/Model/post.php 裡面宣告一個類別,代表要操作的資料庫
class Post extends AppModel { var $name = 'Post'; //var $userTable = 'articles'; 也可以這樣指定資料表 }
這代表了新增一個 Model ,我們採用預設的命名規則,資料表的名稱叫做 posts (複數)。
當然,我們也可以不用預設命名規則,如上所示。
接下來建立 app/controllers/posts_controller.php 當作 Controller 。
set('posts', $this->Post->findAll($conditions = null, $fields = "", $order = 'ID ASC', $limit = null, $page = 1, $recursive = null)); } // 這邊要依照 ID 排序,$condition 代表的是 SQL 的 WHERE 條件 function view($id = null) { $this->Post->id = $id; $this->set('post', $this->Post->read()); } // 這是閱讀單篇文章用的 } ?>Controller 裡面的$this->set() 就是用來把變數「傳遞」到 view 中,例如
//在某個 Controller 裡面的 method
$hello = "Hello World"
$this->set('post', $hello);
這個動作可以把 Hello World 這個字串傳到 view ,變成 $post 變數,當在 view 中執行 echo $post 的時候,會印出 Hello World 。
至於 view 的寫法,
文章列表
標題 | 時間 | 譯者 | |
---|---|---|---|
link($post['Post']['post_title'], "/posts/view/".$post['Post']['ID']); ?> |
view 的檔名則隨著 Controller 的 Method 而定,例如 Posts::index() 的 view 就是
/views/posts/index.ctp ,而 Posts::view() 的 view 則是 /view/posts/view.ctp。
常見問題
Q: 如何替换cake默认的layout(全局模板页)?
A: 把在/cake/libs/view/templates/layouts/default.ctp 复制到
/app/views/layouts/default.ctp ,然后按需修改
Q: 如何获取由$form->input(‘var’)提交的数据?
A: 在controller中通过$this->params['url']['data'][$this->controller->modelClass]['var'] 取得
Q: 如何建立不需要读取数据库的model?
A: 添加属性声明:var $useTable = false;
Q: 使用UTF8 库时出现乱码(页面和?菘舛际荱TF8,只是显示取出的数据时乱码)?
A: 在1.2x中:在/app/config/databases.php的配置中添加’encoding’ => ‘UTF8′,cake则会在执行SQL前先执行一次SET NAMES $encoding
Q: 如何建立一个公共的controller(如何使所有controller都有相同的属性或方法)?
A: 把/cake/app_controller.php 复制到 /app/app_controller.php ,按需修改即可。(为什么是放到/app目录下而不是/app/controllers中呢?)
Q: 如何建立一个公共的model(如何使所有model都有相同的属性或方法)?
A: 把/cake/app_model.php 复制到 /app/app_model.php,按需修改即可。(为什么是放到/app目录下而不是/app/moclels中呢?)
Q: 如何建立一个公共的helper(如何使所有helper都有相同的属性或方法)?
A: 同上,推理可得。
參考文獻: http://www.82cs.com/201008/04/cakephp_faq/
http://blog.roga.tw/2008/11/16/1178
沒有留言:
張貼留言