Codeigniter缺少参数1

时间:2012-10-10 08:20:04

标签: php codeigniter

我正在学习通过codeigniter进行简单的登录,然后我收到了类似的错误 Missing argument 1 for C_login::login()当我在视图中按“登录”按钮而不输入用户名和密码字段时。{/ p>

这些是我的控制器,我的IDE(netbeanPHP + CI框架)显示没有错误

<?php
class C_login extends CI_Controller{

public function __construct() {
    parent::__construct();
    $this->load->model('m_login'); 
}

function index()
{
    $this->form_validation->set_rules('username','trim|Username','required|exact_length[4]|xss_clean');
    $this->form_validation->set_rules('password','trim|Password','required|min_length[4]|max_length[40]|xss_clean|callback_login');

    if($this->form_validation->run() == false)
    {
        $this->load->view('login');
    }
    else
    {
        echo 'sukses validasi';
    }

}

function login($password)
{
    $username = $this->input->post('username');
    $password = $this->input->post('password');
    $jabatan = $this->input->post('jabatan');

    $value = $this->m_login->cekpass($username,$password,$jabatan);

    if($value)
    {
        return true;
    }
    else
    {
        return false;
    }

}


}
 ?>

这是模型,我认为我的模型没有显示任何错误

<?php
class M_login extends CI_Model{

public function __construct() {
    parent::__construct();
}

function login ($username, $password, $jabatan)
{
   $this->db->where('username',$username);
   $this->db->where('password',$password);
   $this->db->where('jabatan',$jabatan);

   $value = $this->db->get('ms_user');

   if($value->num_rows()>0)
   {
       return true;
   }
   else
   {
       return false;
   }


}
}?>

1 个答案:

答案 0 :(得分:1)

您需要从$password控制器的login方法中删除形式参数C_login。显然,你不会通过URL传递密码,对吗?

关于模型中未定义方法的第二个错误,这是因为你用错误的名称调用了你想要的方法。您在模型中将其命名为login,但您在控制器中要求cekpass。重命名方法定义,或者将您要调用的内容更改为login