2012-02-29 75 views
2
傳遞一個ID的方法

我有以下情形:通過郵寄形式的CakePHP

的用戶都可以從以下網址查看我的應用程序後:/posts/Post_tile-210

,我想他們是能夠針對此帖子創建評論。這將通過在評論表中使用帖子ID作爲外鍵創建評論和帖子之間的關係來完成。

我的問題是,我看到三種可能的方式來傳遞的帖子ID添加註釋的方法:

1)通過等形式動作過關的帖子ID:/comment/add/id:210

2)傳通過像一個隱藏的後場ID:<input type="hidden" name="id" value="210">

3)通過URL本身

什麼是最好的方式,什麼是利弊搶在控制器方法的帖子ID?我喜歡第一個最好的,因爲它似乎很好,易於安裝,並且感覺與Cake Apps中的查詢/命名參數更加一致。

回答

1

我會成立類似的控制器方法:

function add(post_id){ 

,並通過它像

URL/comment/add/variable 
2

由於您在您的評論模型和表有post_id,更容易使用隱藏域:

echo $this->Form->input('post_id', array('type' => 'hidden', 'value' => $post_id)); 

而當你提交這個表單時,你會得到一個完整的數組,準備好讓你保存評論與後置主鍵。

2

你可以這樣做。您可以發佈它作爲一個隱藏字段:

echo $this->Form->input('post_id', array('type' => 'hidden', 'value' => $post_id)); 

或在提交參數:

echo $this->Form->input('Post', array('type' => 'post', 'url' => array('controller' => 'posts', 'action' => 'add', $post_id))); 

使得POST_ID一個隱藏字段會給你的已經包括但在請求中POST_ID優勢需要使用任何附加代碼與$this->Model->save一起使用,因爲它將被包含爲$this->data['Comment']['post_id']。這意味着您只需撥打$this->Comment->save($this->data);並將其保存到表格中。

如果你通過它的URL作爲參數,您將需要設置它,所以它會在以下兩種方式之一保存:

$this->data['Comment']['post_id'] = $post_id; 

$this->Comment->post_id = $post_id; 

因此,最好的做法是把它作爲一個隱藏的領域。