/* /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
沒有留言:
張貼留言