我正在使用Codeigniter 3框架并遇到问题
在我的应用程序中,有2个控制器:
主要和用户。
在 Main 控制器中,有两种方法, method1 (没有参数)和 method2 (带一个参数),它们都加载自己的视图,但是他们的视图中有一个相同的表单,将提交给用户控制器方法。在method1和method2中,我生成一个随机数并存储在$ data ['random']中,也存储在会话变量中(以备将来检查):
$ data ['random'] = generate_random();
$ this-> session-> set_userdata('random',$ data ['random']);
两种方法中的$ data ['random']在表单输入中设置然后提交
问题是:当我检索从 method1 提交的数据(在用户控制器中),并与会话值进行比较时,它们是相等的。 但 method2 的这种情况不同。提交的值不等于会话值!!!
方法之间的唯一区别是:method2接受参数和method1,no。
注意:当我为$ data ['random']分配固定数字(而不是生成随机数)时,两种方法的结果相同。
已编辑:已添加代码
Main 控制器方法:
public function method1(){
//other data setting and...
$data['random'] = generate_random();
$this->session->set_userdata('random', $data['random']);
$this->load->view('view_folder/first', $data);
}
public function method2($param){
//other data setting and...
$data['random'] = generate_random();
$this->session->set_userdata('random', $data['random']);
$this->load->view('view_folder/second', $data);
}
用户控制器方法:
public function check(){
echo $this->input->post() . '<br>';
echo $this->session->userdata('random');
exit();
//other...
}
在视图文件中,相同的表单是视图代码的一部分。正如我所说,$ data ['random']将被设置为表单中的输入值,并将提交。另一件事,在第一个视图文件中,有一些项链接到 method2 :
<!-- other -->
<a href="<?php echo base_url();?>main/method2/3">some item</a>
<a href="<?php echo base_url();?>main/method2/some_var">some item</a>
<!-- other -->
我仔细检查代码,测试不同的情况,我认为这个问题与传递给method2的参数有关。我的意思是,传递的参数创建问题。但我不明白和合乎逻辑的理由!