我想为我的项目添加一些自定义验证功能。我正在使用CI 2.0.2。我按照www.michaelwales.com/2010/02/basic-pattern-matching-form-validation-in-codeigniter/
中描述的所有步骤进行了操作我在application \ libraries中创建了一个类,如下所示 -
<?php if (!defined('BASEPATH')) exit('No direct script access allowed.');
class MY_Form_validation extends CI_Form_validation {
public function MY_Form_validation() {
parent::__construct();
}
function valid_us_zip()
{...........}
}//class ends
我将规则添加到我的application \ config \ form_validation.php中,如下所示 -
$config = array(
'login/sign_up_process' => array(
array(
'field' => 'txt_username_signup',
'label' => 'Username',
'rules' => 'trim|required|valid_email|xss_clean|prep_for_form'
),
array(
'field' => 'txt_zip_signup',
'label' => 'Zip',
'rules' => 'trim|required|valid_us_zip|xss_clean|prep_for_form'
)
)
);
在我的控制器功能中,我添加了代码 -
$this->load->library('form_validation');
echo "Error ::".$this->form_validation->run();
我的验证在扩展表单验证类之前有效,但现在即使我提交空表单也不会出现任何错误。我无法解决这个问题:(
答案 0 :(得分:3)
最后,我得到了它的工作:)
我在问题中解释的所有步骤都是正确的。在CI2 +中,正如 swatkins 所提到的,我们要将应用程序/核心和库文件中的扩展核心类文件保留在应用程序/库中。
我在应用程序/库中保留了扩展的MY_Form_validation.php,发现$ config没有传递给parent的构造函数。我把它编辑为 -
<?php if (!defined('BASEPATH')) exit('No direct script access allowed.');
class MY_Form_validation extends CI_Form_validation {
public function MY_Form_validation($config) {
parent::__construct($config);
}
function valid_us_zip()
{...........}
}//class ends
并测试了它。我的自定义函数被调用,我也收到了错误消息。我希望这有助于某人。
答案 1 :(得分:0)
在CI2 +中,您需要将这些新库扩展到core
文件夹中,而不是libraries
。
答案 2 :(得分:0)
在您的应用程序/库目录中创建文件名: 的 MY_Form_validation.php 强>
然后在你的班级
代码:
class MY_Form_validation extends CI_Form_validation
{
function My_Form_validation()
{
parent::__construct();
}
}