使用if语句时,在codeigniter中重定向问题

时间:2015-04-17 16:27:45

标签: codeigniter

我一直试图在删除或使用控制器中的if条件插入数据后重定向同一个上一页,以闪烁消息,但有些东西我不知道。

<form action="<?php echo base_url(); ?>curdler/add/tbl_category/addCat/category" method="post">
Category Title<input type="text" name="category_title"/> </br>
<input type ="submit" value="submit">
</form>
<?php echo $this->session->flashdata('msg'); ?>

控制器

public function add() {

    $data = $_POST;
    $tableName = $this->uri->segment(3);
    $content = $this->uri->segment(4);
    $folderName = $this->uri->segment(5);

    $this->load->model('curdmodel');

    if($this->curdmodel->add($data, $tableName)){

    $this->session->set_flashdata('msg', 'Category added');
    redirect('welcome/index/'.$content.'/'.$folderName);
    } else{
    $this->session->set_flashdata('msg', 'Category Not Added');
    }
}

当使用if语句时,它会转到不同的url,但没有if语句,它的工作正常。

模型

    public function add($data, $tableName) {
    $this->db->insert($tableName, $data);
}

1 个答案:

答案 0 :(得分:2)

只有在if语句的计算结果为true时才会发生重定向,如果条件为false,则codeigniter只是设置flashdata然后结束脚本。

考虑将代码的顺序更改为

if($this->curdmodel->add($data, $tableName)){
    $this->session->set_flashdata('msg', 'Category added');
} else{
    $this->session->set_flashdata('msg', 'Category Not Added');
}
redirect('welcome/index/'.$content.'/'.$folderName);

此外,您的模型不包含任何返回值,因此永远不会为要评估的if语句传回数据。您应该按如下方式更新模型:

public function add($data, $tableName) {
    $this->db->insert($tableName, $data);
    if($this->db->affected_rows() > 0) {
        return true;
    }
}
相关问题