【发布时间】:2016-03-10 07:53:51
【问题描述】:
我做了一个简单的类扩展CI_Form_validation class 并将它放在application\libraries\MY_Form_validation.php 中。这是文件中的代码:
<?php
class MY_Form_validation extends CI_Form_validation {
public function __construct(){
parent::__construct();
}
public function uniquekey($str){
if($str == 'anda'){
$this->form_validation->set_message('uniquekey', "The category name has been used");
return false;
} else {
return true;
}
}
}
?>
在另一个名为Category 的类中,我做了$this->load->library('form_validation'); 并在验证输入文本框时使用了上面的回调函数。
但是,当我尝试提交表单时,服务器返回两个错误框,第一个错误说:
Message: Undefined property: MY_Form_validation::$form_validation
Filename: libraries/MY_Form_validation.php
第二个错误说:
Message: Call to a member function set_message() on null
Filename: /opt/lampp/htdocs/onesource_reboot/application/libraries/MY_Form_validation.php
我的代码做错了什么?我从here 阅读并使用codeigniter 3.0.4 版
感谢narf 和devpro,我终于成功了,当我插入单词“anda”并提交表单时,表单验证将返回false 并显示所需的错误消息。 我尝试了一些涉及数据库交互的更复杂的验证。我在构造函数中添加了这一行,仍然在同一个类中:
public function __construct(){
parent::__construct();
$this->CI->load->database();
}
并将我的 uniquekey 函数更改为:
public function uniquekey($str){
$this->CI->db->select('CategoryName');
$this->CI->db->where('CategoryName', $str);
$result = $this->CI->db->get('category');
if($result->num_rows > 0){
$this->set_message('uniquekey', 'Kategori telah terpakai');
return false;
} else {
return true;
}
}
并提交了表单,这是我得到的结果:
Unable to access an error message corresponding to your field name Kategori.(uniquekey)
现在呢?
解决了。 我不知道这是否是一个错误,但这是我为使其正常工作所做的工作。
public function uniquekey($str){
$this->CI->db->select('CategoryName');
$this->CI->db->where('CategoryName', $str);
$result = $this->CI->db->get('category');
$numrows = $result->num_rows();
if(numrows > 0) {
$this->set_message('uniquekey', 'Kategori telah terpakai');
return false;
} else {
return true;
}
}
【问题讨论】:
标签: php codeigniter