2012-10-28 80 views
3

我从昨天开始面临这个问题,无法修复它。我的回调函数不起作用。它总是返回TRUE,但我不知道为什么?谁能帮我?Codeigniter回调函数不起作用

这里是模型:

class Login_model extends CI_Model { 
public function check_login($str) 
    { 
     $this->form_validation->set_message('check_login', 'Error'); 
     return FALSE; 

    } 
function validate_login() 
{ 
    $this->form_validation->set_rules('email', 'Email Address', 'trim|required|valid_email|xss_clean'); 
    $this->form_validation->set_rules('password', 'Password', 'callback_check_login'); 

    if($this->form_validation->run() == FALSE) 
    { 
     return FALSE; 
    } 

    return TRUE; 
}} 

回调函数不应该返回TRUE。但它回来了!我会死于这个问题! :@

+0

为什么你'validate_login'方法返回布尔值,而不是装载观点或设置输出?你如何得出结论:'check_login'方法总是返回true(这是不可能的,因为它不会返回true)。我们需要更多的代码和更多的解释,因为这根本不适用于任何CI。 – Repox

+2

数据验证不应该进入CI中的控制器吗?它甚至可以在模型中工作吗? – bostaf

+0

你是对的!回调函数在模型中不起作用。我将表单验证和回调函数移到了控制器上,它完美地工作了! @Struna –

回答

4

它将返回TRUE因为

  1. 你不及格emailpassword为 'validate_login()'。
  2. 因此$this->form_validation->run()不起作用。

移动validate_login()任何控制器

+0

谢谢,我刚把代码移到控制器上,最后它的工作原理!难以置信的!!! –