如何在Code Igniter中将值从视图传递到模型

时间:2014-02-17 00:03:43

标签: php codeigniter

我想编辑检索到的用户,这是我的代码

我在模型中有一个选择所有用户的功能

public function retrieve() {
    $this->db->select('*');
    $query = $this->db->get('UserDetails');     
    return $query->result();
}

在控制器中,查询的数据将传递给视图

public function edit_user() {
    $data['query']=$this->user_model->retrieve();
    $this->layout->view('creation/update_user',$data);
}

喜欢这个

<?php foreach($query as $row): ?>
<a href="edit_user"><?php echo $row->username;?></a>
<?php echo $row->firstname;?></a>
<?php endforeach;?>

我希望当用户点击用户名时,他应该能够编辑用户 如何获取将传递给

的点击用户名的值
 $username 

在模型中(我知道CI是MVC,如何传递给控制器​​然后进行建模)

public function select_user_details() {
    $this->db->select('*');
    $this->db->where('username' $username);
    $query=$this->db->get('users');
    return $query->result();
}

在用于编辑用户的控制器中

public function edit_user() {
    $data['query']=$this->user_model->select_user_details();
    $this->layout->view('creation/update_user',$data);
}

在显示屏中

<? foreach($query as $row)
<input type="text" name="uname"  value="<?php echo $row->username; ?>"/>
<input type="text" name="name"  value="<?php echo $row->names; ?>"/>
<?php endforeach; ?>

2 个答案:

答案 0 :(得分:0)

您可以向编辑用户方法添加参数,并在控制器中进行重定向。因此,如果没有指定id,则获取所有用户的列表,但如果有id,则运行新的模型函数(使用WHERE user_id = $ id而不是$ username查询)并加载另一个视图。像这样:

public function edit_user($id = false) {
    if ( !$id ) {
        $data['query']=$this->user_model->retrieve();
        $this->layout->view('creation/update_user',$data);
    }
    else {
        $data['query']=$this->user_model->retrieve_one_user($id); // new model method for a single user
        $this->layout->view('creation/edit_user',$data);        // new view 
    }
}

在您看来,您需要将您的用户名链接转到... / edit_user / USER_ID_HERE。

您还可以使用不同的控制器方法:例如list_users()edit_user($id)。此外,您可以在单个视图中执行此操作。这完全取决于您以及哪种方式最适合您的应用。有数百种方法可以做到。


要使用最少量的更改来执行此操作,只需在select_user_details方法(以及控制器中的edit_user方法)中添加一个参数:

public function select_user_details($username) {
...
public function edit_user($username) {
...

但请再次确保用户列表中的链接转到... / select_user_details / my_username_here。像这样:

<a href="edit_user/<?php echo $row->username;?>"><?php echo $row->username;?></a>

答案 1 :(得分:0)

在视图中 -

  <?php foreach($query as $row): ?>
    <a href="<?php echo base_url()?>controllerName/edit_user/<?php echo $row->username;?>"><?php echo $row->username;?></a>
    <?php echo $row->firstname;?></a>
    <?php endforeach;?>>

在控制器中 -

    function edit_user($userName)
    {
     $data['query']=$this->user_model->retrieve($userName);
     $this->layout->view('creation/update_user',$data);
    }

在模型中 -

public function retrieve($userName) {
    $this->db->select('*');
    $query = $this->db->get('UserDetails');     
    return $query->result();
}