CodeIgniter框架下如何不存数据库直接传递数据到xyz_view
嘿,我来给你几个不用数据库就能把pin code传递到xyz_view的实用方案,都是CodeIgniter项目里常用的思路:
方法1:利用CodeIgniter Session 持久传递
这是最稳妥的跨页面传值方式,适合需要在多个步骤中保留数据的场景:
- 先确保Session库已经加载:你可以在
application/config/autoload.php里添加'session'到$autoload['libraries']数组,或者在abc_con里手动加载:$this->load->library('session'); - 在
abc_con的cartload()方法中,把拿到的pin code存入Session:// 假设你已经从abc_view的表单获取到pin code $pin_code = $this->input->post('pin_code'); // 存入session $this->session->set_userdata('pin_code', $pin_code); - 到
xyz_con的loadxyz()方法时,取出Session里的值并传给视图:$pin_code = $this->session->userdata('pin_code'); // 传递给xyz_view $this->load->view('xyz_view', ['pin_code' => $pin_code]); // 如果你用完后不想保留这个值,可以手动清除 $this->session->unset_userdata('pin_code'); - 最后在
xyz_view里直接使用即可:echo "Pin Code: " . $pin_code;
方法2:用Flash Data 一次性传递
如果这个pin code只需要在cart_view跳转到xyz_view这一次传递,用Flash Data更合适——它会在页面刷新后自动失效:
- 同样先确保Session库已加载,在
abc_con的cartload()里存入Flash Data:$this->session->set_flashdata('pin_code', $pin_code); - 在
xyz_con的loadxyz()里取出并传递给视图:$pin_code = $this->session->flashdata('pin_code'); $this->load->view('xyz_view', ['pin_code' => $pin_code]); // 特殊情况:如果需要刷新页面后还保留这个值,可以调用 // $this->session->keep_flashdata('pin_code');
方法3:通过表单隐藏字段传递
如果你的流程是从cart_view提交表单到xyz_con,那直接把pin code放在隐藏字段里带过去最直接:
- 首先在
abc_con的cartload()方法中,把pin code传给cart_view:$this->load->view('cart_view', ['pin_code' => $pin_code]); - 在
cart_view的表单里添加一个隐藏输入框:<form action="<?php echo site_url('xyz_con/loadxyz'); ?>" method="post"> <!-- 你的其他表单内容 --> <input type="hidden" name="pin_code" value="<?php echo $pin_code; ?>"> <button type="submit">提交到下一步</button> </form> - 最后在
xyz_con的loadxyz()里直接获取这个值:$pin_code = $this->input->post('pin_code'); $this->load->view('xyz_view', ['pin_code' => $pin_code]);
这三种方法都不用碰数据库,你可以根据自己的业务场景选最合适的——比如需要跨多个步骤存数据用Session,一次性传递用Flash Data,表单跳转就用隐藏字段。
内容的提问来源于stack exchange,提问作者Rajura
相关产品推荐
相关产品推荐

