2010-06-03 142 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