2012-11-26 58 views
0

对于CodeIgniter来说还是很新的,并试图执行以下操作。我可能会做这个错误的,任何方向,非常感谢。CodeIgniter控制器 - 将变量传递给索引()

我有一个函数,在提交登录表单时调用validate_creds。如果表单登录成功,如果不成功,我想设置一个$error_msg并重新加载表单。 validate_creds()似乎验证正确,但正如你可以在else声明中看到的,我想重新加载index(),传递$error_msg在窗体顶部显示消息。

public function index($error_msg = '') 
     { 
      //data 
      $data['login'] = "Logged In"; 

      if($error_msg !== '') { 
       $data['error_msg'] = $error_msg; 
      } 

      //view 
      $this->load->view('templates/login/login_header',$data); 
      $this->load->view('login/login_form', $data); 
      $this->load->view('templates/login/login_footer',$data); 
     } 


     public function validate_creds() 
        { 
         $this->load->model('user_model'); 
         $query = $this->user_model->validate(); 
         if($query)//if the users creds have been validated... 
         { 
         $data = array(
          'username' => $this->input->post('username'), 
          'is_logged_in' => true 
         ); 

         $this->session->set_userdata($data); 
         redirect('gallery'); 
        } 

        else 
        { 
         $error_msg = "Your username or password is not correct."; 
         $this->index($error_msg); 
        } 
       } 

形成消息

<?php if($error_msg != ''): ?> 
    <div class="alert alert-error"> 
    <?php echo $error_msg; ?> 
    </div> 
<?php endif; ?> 

什么目前正在发生的事情是$error_msg显示了所有的时间。

+0

您的索引功能没有正确关闭,这是复制/粘贴错误吗? – GrayB

+0

谢谢,是复制/粘贴 - 编辑的问题。 – Bungdaddy

回答

0

我希望这只是它是如何与复制粘贴出来,因为这段代码很难阅读。请检查php codesniffer并将其作为行业标准,查看一些关于php代码格式的zend文档。

所以你的逻辑需要将错误信息注入到索引函数中(我假设你的行为只是没有被标记为这样),如果它没有被注入,它不会声明错误信息,因为它是没有注射。

我会看$ this-> user_model-> validate();以确保正确处理http请求(post)。

+0

谢谢你,菜鸟的错误。 – Bungdaddy

+0

“if($ query)”是这里的关键字,因为错误消息var被设置的唯一方式是如果没有满足该条件,并且我假设来自$ this-> user_model-> validate的$ query var ();被封装在一些东西中,以检查用户是否通过http发布了表单。如果不是,那么它永远不会满足条件,并且总是设置错误,因为甚至不需要发布表单来触发逻辑。 – jsteinmann

相关问题