我已经构建了一个简单的表单验证,我打算将它用于ajax调用,但是现在我似乎无法收到我的错误消息?我知道表单验证器正在运行,而且我仍然可以在ci_form_validation->_error_array
中看到我想要的错误,但这是一个受保护的属性:((这是我打印的时候)
表单验证器工作正常!我之前已经使用过这种方法数千次了,但这次我似乎无法得到我的错误信息而且我不明白为什么?我会将代码保持简单,以便进行测试我已经删除了所有内容。
Ajax控制器(已删除部件)
<?if(!defined('BASEPATH'))die();
class Ajax extends MY_Controller{
public function __construct(){
//if(!isset($_POST)&&!empty($_POST))redirect('/','refresh');
parent::__construct();
//check this site with requested uri or request server url
$this->con['validation']['add_user']=array(
array('field'=>'firstname','label'=>'First name','rules'=>'max_length[30]|required|alpha'),
array('field'=>'lastname','label'=>'Last name','rules'=>'max_length[30]|required|alpha'),
array('field'=>'email','label'=>'Email address','rules'=>'required|is_unique[users.email]|max_length[150]|valid_email')
);
//$this->html->set_doc_type('html');//set application json
//header('Content-Type: application/json');
}
public function add_user(){
if($this->_fv('add_user')){
$this->load->model('users');
$result=$result=$this->users->insert($this->input->post('firstname'),$this->input->post('lastname'),$this->input->post('email'));
//var_dump('hi there');
echo $result;
}else{
var_dump($this->fv);
var_dump($this->input->post());
var_dump('returned false');
var_dump(validation_errors());
$result=array('firstname'=>form_error('firstname'),'lastname'=>form_error('lastname'),'email'=>form_error('email'));
echo json_encode($result);
}
$this->load->view('index/signup');
//exit;
}
}
我的控制器
<?if(!defined('BASEPATH'))die();
class MY_Controller extends CI_Controller{
public$con;
public function __construct(){
parent::__construct();
}
public function _fv($form=null){
if($form==null)return true;
$this->load->library('form_validation');
$this->load->library(array('form_validation'=>'fv'));
$this->fv->set_rules($this->con['validation'][$form]);
if($this->fv->run()===false){
return false;
}else{
return true;
}
}
}
就像我说的,奇怪的是我可以在ci_form_validation对象中看到错误消息,但它不会显示在form_error()
或validation_errors()
中?
我是否错过了自动加载的库或帮助程序?这是我的装载者
$autoload['helper'] = array('url','form');
$autoload['libraries'] = array('HTML'=>'html','database','session');
//HTML is my header and footer building library.
我根本没有收到任何PHP错误消息。一切都按预期工作,我只是没有收到任何错误消息? :&#39;(
我想要的错误信息是is_uniqiue。
["_error_array":protected]=> array(1) { ["email"]=> string(52) "The Email address field must contain a unique value." }
答案 0 :(得分:0)
我找到了解决方案。我的猜测是我的工作方式出了问题?但我不知道是什么。我有点欺骗我的解决方案,但如果你有任何想法让我知道! :)
<?if(!defined('BASEPATH'))die();
class MY_Form_validation extends CI_Form_validation{
public function __construct(){
parent::__construct();
}
public function get_errors(){
return$this->_error_array;
}
}