2010-06-03 105 views
2

我正在構建博客引擎的CakePHP教程,爲每篇文章添加評論。我可以通過選擇框來選擇應該附加的帖子來添加評論。我希望能夠點擊帖子中的「添加評論」鏈接,並將該關聯關聯到以編程方式形成的帖子。我不確定如何將post_id傳遞給我的comments_controller中的add方法。我的add方法的主體是自動生成的腳手架代碼。是否像爲add方法添加$ postId參數一樣簡單,並將其寫入我的評論模型中的post_id?雖然這並不準確,因爲我希望在我的提交按鈕點擊我的註釋添加視圖時調用add。CakePHP博客教程的評論系統

謝謝大家。

編輯 - 添加了我目前使用的代碼。這只是我的comments_controller中的add方法。

​​

回答

3
function add($postid = null) {    
    if(!empty($this->data) { 
     $this->Comment->create();       
     $this->data['Comment']['post_id'] = $postid; // see how it needs to be? 
     ...then save the data... 
+0

這就是我的意思! ;) – 2010-06-08 08:08:56

+0

當我這樣做時,引發警告512「SQL錯誤:1048:列'post_id'不能爲空」。 – Ryan 2010-06-08 10:46:16

+0

你在開玩笑嗎?當然你必須提供$ post_id = 。 – Sergei 2010-06-08 11:16:30

0

在您的博客文章作爲底部的創建你的鏈接,

<?php echo $html->link('Add Comment', array('controller'=>'Comments','action'=>'add',$post->id)) ?> 

然後你就可以在你的評論控制器的Add方法,

function add($postid){ 
    $this->data->Comment->post_id = $postid; 
    $this->data->Save(); 
} 

這種類似會做你我會說很好。然後你的網址是example.com/comments/add/3仔細檢查代碼,因爲這是早上的第一件事情,我們已經用完了牛奶,所以我沒有咖啡! ;)

+0

謝謝推!正確的代碼行應爲: $ this-> Comment-> set('post_id',$ postid); – Ryan 2010-06-03 23:52:34

+0

只有在您將COmments控制器從您的視圖中推出時纔可以。 在處理控制器中發佈的數據時,它都可以從$ this-> data訪問,因此如果需要的話,您可以直接覆蓋值。 – 2010-06-04 13:37:35

+0

我認爲我已經解決了這個問題,有點不成熟。如果我寫出一個字符串($ this-> Comment-> post_id ='1'),我可以使用推薦的方法和其他方法來存儲值。如果我使用$ postid變量,0會被寫入我的註釋表項的post_id字段。有什麼想法嗎?我可以使用print_r並看到$ postid是我傳遞給add函數的東西。有什麼想法嗎? – Ryan 2010-06-06 13:28:55