我使用表单验证库和我的自定义回调在CodeIgniter中进行表单验证。
public function insert_user()
{
if($this->input->post('submit')) {
// load form validation library
$this->load->library('form_validation');
// configurations
$config = array(
array(
'field' => 'username',
'label' => 'Username',
'rules' => 'required|callback_username_check'
)
);
$this->form_validation->set_rules($config);
// .... continue ....
}
}
当方法公开时,它按预期工作。
public function username_check($username)
{
// do some stuffs here
}
当我将方法设为私有时,它无效。
private function username_check($username)
{
// do some stuffs here
}
为什么私有方法的回调不起作用?
为什么我需要这个?
CodeIgniter控制器中的公共方法可通过URL访问,如上面的示例
我不希望公开访问回调方法。
答案 0 :(得分:2)
回调函数必须是公共的。 Codeigniter表单验证类在当前控制器上访问您的函数,因此它可能不是私有的..
要解决您的问题,您可以考虑使用My_form_validation扩展CI_Form_validation类..
class MY_Form_validation extends CI_Form_validation
{
public function __construct()
{
parent::__construct();
}
function username_check($str)
{
/* your code */
}
}
然后在您的验证中,您必须只设置..
'rules' => 'required|username_check'
答案 1 :(得分:0)
私有函数只能由类的对象访问。此函数仅在其自己的类中可见。阅读有关变量/函数范围here
的更多信息