您好我正在尝试在CodeIgniter中获取输入类型文件的form_error。我在Javascript中编写了一个代码,该代码使用Ajax传递详细信息,如下所示
var name = $("#name").val();
var des = $("#des").val();
var img=$("#file").prop('files')[0];
var fd=new FormData();
fd.append('photo',img);
fd.append('name',name);
fd.append('description',des);
$.ajax({
type: "POST",
url: "<?php echo base_url();?>personadd",
data: fd,
contentType: false,
cache: false,
processData: false,
success:function(data)
{
console.log(data);
}
});
在我的控制器内部,我的代码如下:
$this->form_validation->set_rules('name','Person Name','trim|required',array('required'=>'Please Enter %s'));
$this->form_validation->set_rules('description','Description','trim|required',array('required'=>'Please Enter %s'));
if(!isset($_FILES['photo']['name'])) {
$this->form_validation->set_rules('photo','Image','required',array('required'=>'Please select an %s'));
}
if($this->form_validation->run()==FALSE) {
echo json_encode(['name'=>form_error('name'),'description'=>form_error('description'),'file'=>form_error('photo')]);
}
执行此操作时,我没有收到file的文件。请帮我解决此问题
答案 0 :(得分:0)
尝试以下方法
if(validation_errors())
{
echo json_encode = validation_errors();
}
答案 1 :(得分:0)
我刚刚修改了控制器并解决了问题
if($_FILES['photo']['error']!=0)
{
$this->form_validation->set_rules('photo','Photo','callback_filecheck');
}
if($this->form_validation->run()==FALSE)
{
echo json_encode(['name'=>form_error('name'),'description'=>form_error('description'),'photo'=>form_error('photo')]);
}
并且回调函数是
public function filecheck()
{
$this->form_validation->set_message('filecheck', 'Please select {field}');
return false;
}