codeigniter自定义验证中的图像上传验证

时间:2016-10-24 11:05:21

标签: php codeigniter

我有一个问题如下 我已经设置了这样的规则

$this->form_validation->set_rules('image', 'Image', "callback_image_upload['image',".$id."]");

和这样的功能

function image_upload($param,$value,$id=''){


            if($_FILES[$value]['name'] == ''){
                $this->form_validation->set_message('image_upload', 
                              'The %s field can not be Null');
                return false;       
            }else{
                return true;
            }

    }

在提交表单时我收到了这样的错误 遇到PHP错误

  

严重性:注意

     

消息:未定义的索引:'image',

请尽可能帮助我

2 个答案:

答案 0 :(得分:0)

确保您的表单选择器正确,如..

Html>>

<form action="" method="post" enctype="multipart/form-data">


<input type='file' name='userfile' required>

在控制器验证

if (empty($_FILES['userfile']['name']))
 {   
  $this->form_validation->set_rules('userfile', 'Document', 'callback_file_selected_test');
  }

    if ($this->form_validation->run() == FALSE) {
         //error
     }
    else{
           // success       
      }

function file_selected_test(){

    $this->form_validation->set_message('file_selected_test', 'Please select file.');
    if (empty($_FILES['userfile']['name'])) {
            return false;
        }else{
            return true;
        }
}

您可以在stackoverflow中的每个位置检查此代码。如有任何其他问题,请对此发表评论。

答案 1 :(得分:0)

抱歉给您带来不便。我认为这是我的错误,并意识到代码点火器回调函数只需要一个参数。我已经重新编写了这样的代码并且完美地完成了它。

$parameters = 'image' . ',' . $id;
$this->form_validation->set_rules('image', 'Image', 'callback_validate_image['.$parameters.']');

    function validate_image($param,$x){

            list($value, $id) = explode(',', $x);

            if($id){
                $hdn = "h_".$value;
                if($this->input->post($hdn) == ''){

                    if(empty($_FILES[$value]['name'])){
                        $this->form_validation->set_message('validate_image', 'The %s field  is required.');
                        return false;
                    }else{
                        return true;
                    }
                }else{
                    return true;
                }
            }else{
                if($_FILES[$value]['name'] == ''){
                    $this->form_validation->set_message('validate_image', 'The %s field  is required.');
                    return false;       
                }else{
                    return true;
                }
            }
        }

它全部用控制器自己编写。如果可能,请发布您的答案,以便尽可能将validate_image函数移动到模型。谢谢你的努力