将变量从视图传递到控制器(MVC)

时间:2014-08-13 13:09:44

标签: php codeigniter

在我看来,我有一个foreach语句,它可以从正确显示的数据库中获取所有必需数据。

以下是观点:

<?php

?>

    <div class="cmt-container" >
        <?php

        foreach($results as $row){
            $user = $row->user;
            $comment = $row->comment;
            $date = $row->date;
            $name = $row->name;
            $joke = $row->joke;
            $joke_id = $row->joke_id;

            // Get gravatar Image
            // https://fr.gravatar.com/site/implement/images/php/
            $default = "mm";
            $size = 35;
            $grav_url = "http://www.gravatar.com/avatar/"."?d=".$default."&s=".$size;

            ?>

            <div class="cmt-cnt">
                <img src="<?php echo $grav_url; ?>" />
                <div class="thecom">
                    <h5><?php echo $user; ?></h5><span data-utime="1371248446" class="com-dt"><?php echo $date; ?></span>
                    <br/>
                    <p>
                        <?php echo $comment; ?>
                    </p>
                </div>
            </div><!-- end "cmt-cnt" -->


        <?php

        }
        ?>

<?php

echo form_open('comments/insertComment');

?>
        <div class="new-com-bt">
            <span>Write a comment ...</span>
        </div>

        <div class="new-com-cnt">
            <input type="text" id="name-com" name="name-com" value="" placeholder="Name is optional" />
            <textarea class="the-new-com" id="the-new-com" name="the-new-com" placeholder="Write your comment here..."></textarea>
            <input type="hidden" name="joke_id">
            <input class="bt-add-com" type="submit" value="Post comment">
            <div class="bt-cancel-com">Cancel</div>
        </div>
        <div class="clear"></div>
    </div><!-- end of comments container "cmt-container" -->

<?php

echo form_close();

?>

我的问题是,如何将$ joke_id变量传递给我的注释控制器中的insertComment函数。

我已将输入字段隐藏在joke_id字段中,因为我想将一个笑话的ID分配给评论,因此该笑话将具有唯一的评论。

2 个答案:

答案 0 :(得分:3)

如果评论与笑话在同一页面上,您可以将$ joke_id放入隐藏的输入中:

<input type="hidden" name="joke_id" value="<?php echo $joke_id; ?>">

当您添加注释(我假设您在insertComment()函数中处理表单数据)时,您可以通过$ _POST ['joke_id']访问该笑话ID。 (是的,这不是很安全,但如果你的用户可以评论任何笑话,你只需要检查数据库中是否存在id等于$ _POST ['joke_id']的笑话,如果是,你只需插入评论)

这就是你想要的吗?

答案 1 :(得分:0)

试试这个..

<?php echo form_open('comments/insertComment'); ?>
        <div class="new-com-bt">
            <span>Write a comment ...</span>
        </div>

        <div class="new-com-cnt">
            <input type="text" id="name-com" name="name-com" value="" placeholder="Name is optional" />
            <textarea class="the-new-com" id="the-new-com" name="the-new-com" placeholder="Write your comment here..."></textarea>
            <input type="hidden" name="jokeid" value="<?= $joke_id; ?>">
            <input class="bt-add-com" type="submit" value="Post comment">
            <div class="bt-cancel-com">Cancel</div>
        </div>
        <div class="clear"></div>
    </div><!-- end of comments container "cmt-container" -->

<?php echo form_close();?>

并插入评论控制器

    public function __construct() {
    //codes here
    $joke_id = $this->input->post('jokeid'); 
}