好的,我正在使用CodeIgniter。 posts.php
是我的观点,显示所有帖子,每个帖子都必须显示相应的评论,这正是我想要实现的目标。
我的模型中有一个方法,它接受postid($postid
)并返回其相应的注释($comment
),除非我通过控制器方法调用模型方法,我该怎么做到这一点?
这是我的观点:
<body>
<?php foreach ($post as $key):?>
<div class="container">
<div class="span10">
<div id="box" class="alert-message block-message info">
<div id="post" class="post">
<?php echo $key->content;?><br />
</div>
<div>
<p><?php //echo $comment;?></p> <!--HERE THE COMMENTS OF THE CORRESPONDNING POST MUST BE ECHOED-->
</div>
<div>
<a href="#" id="commentnow<?php echo $key->postid;?>"><p><em>Comment</em></p></a>
</div>
<div id="commentarea<?php echo $key->postid;?>">
<?php $name=array('name'=>"form$key->postid");
echo form_open("/welcome/comments/$key->postid",$name);
$data=array(
'id' => 'input',
'name'=> 'content',
'rows' => '2',
'placeholder' => "Write a comment...",
'autofocus' => 'TRUE'
);
echo form_textarea($data);
?>
<a href="JAVASCRIPT:form<?=$key->postid;?>.submit()" id="cbtn" class="btn primary small">Comment</a>
<?=form_close();?>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function(){
$("div#commentarea<?=$key->postid;?>").hide();
$('a#commentnow<?=$key->postid;?>').click(function(){
$("div#commentarea<?=$key->postid;?>").slideToggle(250);
});
});
</script>
<?php endforeach;?>
</body>
这是我的控制器方法,它返回与postid对应的注释:
public function comments($postid)
{
//Post Comment
$comment=$this->input->post('content');
$data=array('content'=>$comment,'comment_postid'=>$postid);
$this->comments->postcomment($data);
//Retrieve
$comments['comment']=$this->comments->retrieve($postid);
$this->load->view('posts',$comments);
}
我是新手,如果我的代码不好,请原谅我。我一直期待着改进我的代码&gt;谢谢你耐心等待。 :)
答案 0 :(得分:0)
在我看来,你似乎还没有完全理解如何使用MVC。
首先,您的控制器方法评论包含对帖子的评论 AND 的提取。在查看视图文件时,这似乎不合逻辑。
相反,你应该分开这两个。
在你的控制器中,添加另一个名为* post_comment *的metod,并将添加注释功能移到该方法,然后添加重定向:
public function post_comment($postid)
{
//Post Comment
$comment=$this->input->post('content');
$data=array('content'=>$comment,'comment_postid'=>$postid);
$this->comments->postcomment($data);
redirect('welcome/comments'); //redirect back to comments
}
现在,从控制器中的 comment 方法中删除添加注释,以便只检索注释:
public function comments($postid)
{
//Retrieve
$comments['comment']=$this->comments->retrieve($postid);
$this->load->view('posts',$comments);
}
最后更改您的视图文件 - 您需要将评论发布到新网址:
<?php $name=array('name'=>"form$key->postid");
echo form_open("/welcome/post_comment/$key->postid",$name);
这应该可以解决问题。