2012-08-13 154 views
0

我使用codeigniter并在其中我给你一些搜索条件的将被存储在会话这样的控制器:笨URI /路由器检查

$srchCriteria = array(
'stockCode'=>$this->input->post('srchScode'), 
'qty'=>$this->input->post('srchQty'),       
'class' => $this->router->fetch_class(), 
'method' => $this->router->fetch_method(), 
); 
$this->session->set_userdata('srchCriteria',$srchCriteria);  

并以此为标准输出的基础上产生的。现在,如果用户导航到除此页面以外的其他页面,则需要清除此条件。即每次用户访问搜索页面时,除了分页以外,应该清除搜索条件。为此,我检查了核心控制器中的类和方法变量,如下所示:

$srchCriteria = $this->session->userdata('srchCriteria');  
$className = $this->router->fetch_class(); 
$methodName = $this->router->fetch_method(); 

if(!empty($srchCriteria['class'] ) && !empty($srchCriteria['method'])){ 
    if(($srchCriteria['method'] != $methodName){    
     $this->session->set_userdata('srchCriteria',array()); 
    } 
} 

但它不起作用,请引导我以正确的方式。我在这里犯了什么错误?

回答

0

尝试$this->session->unset_userdata('srchCriteria');而不是$this->session->set_userdata('srchCriteria',array());

+0

都尝试过,但没有结果。我的问题是检查如果循环。它总是清除。不知道问题 – 2012-08-13 07:36:24

+0

你确定问题出在这个“IF”吗?尝试'echo'我在if行中的1234行;'echo'会话中的方法名是'。$ srchCri ['method'];'echo'方法名var是'。$ methodName;'IF ; – TigerTiger 2012-08-13 07:47:49

+0

是的,我回应了它。当有exit关键字时,当exit被注释时,它可以正常工作,并且如果我们检查它是否相等,它总是进入循环,而在其他情况下它不会进入循环。比较$ this-> router-> fetch_class()有什么问题吗? – 2012-08-13 12:45:53