我试图在set_rules(...)行中调用自定义库的方法。
我听说可以创建一个类(在应用程序/库中)扩展本机Form_validation类并在那里编写自定义方法。
所以我的/application/libraries/MY_Form_validation.php包含以下代码;
class MY_Form_validation extends CI_Form_validation {
public function __construct()
{
parent::__construct();
}
function test_my_method($str)
{
//echo "test"; exit;
if ( ! is_array($str))
{
return (trim($str) == '') ? FALSE : TRUE;
}
else
{
return ( ! empty($str));
}
}
}
并且在控制器的功能中我有;
...
public function login() {
$this->load->library('form_validation');
//echo ($this->form_validation->test_my_method(''))? "true":"false";
$this->form_validation->set_rules('username', 'Username', 'trim|test_my_method');
$this->form_validation->set_rules('password', 'Password', 'required');
if($this->form_validation->run())
{ echo "Success"; }
}
...
在set_rules()行中调用时,无法访问函数(test_my_method)。知道什么可能是错的吗? 感谢。
答案 0 :(得分:0)
我没有看到任何理由为什么你没有使用回调函数而是为你的任务扩展表单验证类。有关详细信息,请参阅Callbacks: Your own Validation Functions。你做了,如果你需要以某种方式改变它的原生行为,而不是为了这种任务,你扩展了这个类。此外,如果您已经设置了一些自定义回调,则不需要包含其他规则(如trim,required等),因为您可以在自定义回调函数中检查该字段的所有方面。