codeigniter将数据从视图传递到控制器

时间:2017-04-10 15:54:25

标签: php codeigniter

我遇到了codeigniter的问题。我想更新我的个人资料页面。将文本框中的数据传递给控制器​​时遇到问题。在控制器Profile.php中,我有print_r $数据,显示没有数据来自视图。希望你们能帮助我。谢谢。

查看profile.php

      if(isset($profile)){
    ?>
    <?php echo validation_errors();?> 
    <?php echo form_open('profile/update_profile'); ?>

    <div class="field half first"><input type="password" name="pass" placeholder="Password" value="<?php echo $profile['password']; ?>" /></div>
    <div class="field half"><input type="password" name="con_pass" placeholder="Confirm Password" value="<?php echo $profile['con_password']; ?>" /></div>
    <div class="field half"><input type="text" name="phone_no" placeholder="Phone Number" value="<?php echo $profile['phone_no']; ?>" /></div>
        <li><?php echo form_submit(array('id' => 'submit', 'value' => 'Update')); ?></li>
                        </ul>
                        <?php echo validation_errors();?>
                    <?php echo form_close(); ?> 
                        <?php
                    }
                    ?>

Controller Profile.php

 public function update_profile(){
    $email = $_SESSION['email'];  
    // $data['profile'] = $this->profile_model->getprofile($email);
    $data = array(
        'password' => $this->input->post('pass'),
        'con_password' => $this->input->post('con_pass'),
        'phone_no' => $this->input->post('phone_no')
        );
    print_r($data);
    if($this->profile_model->updateprofile($email,$data))
    {

    $this->load->view('provider/profile', $data);
    }    
}

模型profile_model.php

  public function updateprofile($email, $data){
$this->db->where('email', $email);
return $this->db->update('user', $data);
}
}

1 个答案:

答案 0 :(得分:0)

请尝试以下表单验证

https://www.codeigniter.com/user_guide/libraries/form_validation.html

https://www.codeigniter.com/user_guide/libraries/form_validation.html#rule-reference

实施例

public function update_profile() {

$this->load->library('form_validation');

// You can change what you want set for the rules your self this just example:

$this->form_validation->set_rules('pass', 'pass', 'trim|required');
$this->form_validation->set_rules('con_pass', 'con_pass', 'trim|required|matches[pass]');
$this->form_validation->set_rules('phone_no', 'phone_no', 'trim|required');

if ($this->form_validation->run() == TRUE) {

    // Update model stuff
}

$email = $_SESSION['email']; // User id instead of email.

$profile_data = $this->users_model->getprofile($email);

if ($this->input->post('pass')) {
    $data['pass'] = $this->input->post('pass');
} elseif (!empty($profile_data)) {
    $data['pass'] = $profile_data['pass'];
} else {
    $data['pass'] = '';
}

if ($this->input->post('con_pass')) {
    $data['con_pass'] = $this->input->post('con_pass');
} elseif (!empty($profile_data)) {
    $data['con_pass'] = $profile_data['con_pass'];
} else {
    $data['con_pass'] = '';
}

if ($this->input->post('phone_no')) {
    $data['phone_no'] = $this->input->post('phone_no');
} elseif (!empty($profile_data)) {
    $data['phone_no'] = $profile_data['phone_no'];
} else {
    $data['phone_no'] = '';
}

$this->load->view('provider/profile', $data);

}

模型功能

public function getprofile($email) {
   $this->db->where('email', $email);
   $query = $this->db->get('users');
   return $query->row_array();
}

查看示例

<?php echo form_open('profile/update_profile'); ?>

<?php echo validation_errors();?>

<input type="password" name="pass" value="<?php echo set_value('pass', $pass);?>"/>
<input type="password" name="con_pass" value="<?php echo set_value('con_pass', $con_pass);?>"/>
<input type="text" name="phone_no" value="<?php echo set_value('phone_no', $phone_no);?>" />

<?php echo form_submit(array('id' => 'submit', 'value' => 'Update')); ?>

<?php echo form_close();?>
相关问题