如果我输入MY_Form_validation文件,我就无法运行回调函数...
我现在就跑了。
我的控制器:
function article_new()
{
//Variable de configuration
$allowed_types = 'jpg|jpeg|png';
$max_size ='2048000';// 2 Mo
$max_filename = '';
$this->form_validation->set_rules('image','Image','callback_handle_upload['.$allowed_types.','.$max_size.','.$max_filename.']');
if($this->form_validation->run() == FALSE)
{
--CODE--
我在同一控制器中的回调函数:
function handle_upload($image,$param)
{
if(isset($_FILES['image']) && !empty($_FILES['image']['name']))
{
// PARAMETRE
$file = $_FILES['image'];
$filename = $file['name'];
$param = preg_split('/,/', $param);
$allowed_types = $param[0];
$max_size = $param[1];
$max_filename = $param[2];
$validType = false;
$validWeight = false;
$validLongName = false;
// LONGUEUR NOM IMAGE
if(!empty($max_filename)){
if(strlen($filename) > $max_filename)
{
$this->form_validation->set_message('handle_upload', 'Le nom de l\'image ne doit pas depasser '.$max_filename.' caracteres');
return false;
}
else{
$validLongName = true;
}
}
else{
$validLongName = true;
}
// EXTENSION VALIDE OU PAS
$extension = end((explode(".",$filename)));
$extension_config = array_map('trim',explode(" ",$allowed_types));
if(!empty($allowed_types)){
if(in_array($extension, $extension_config)){
$validType = true;
}
else{
$this->form_validation->set_message('handle_upload', "Ce type de fichier n'est pas autorisé");
return false;
}
}
else{
$validType = true;
}
// POIDS VALID OU PAS
if(!empty($max_size)){
if($file['size'] > $max_size)
{
$this->form_validation->set_message('handle_upload', "L'image est trop lourde 2 Mo maximum");
return false;
}
else
{
$validWeight = true;
}
}
else{
$validWeight = true;
}
if($validLongName == true && $validType == true && $validWeight == true)
{
return true;
}
}
else
{
$exist_cover = $this->blog_model->get_cover();
if($exist_cover == NULL){
// throw an error because nothing was uploaded
$this->form_validation->set_message('handle_upload', "Vous devez uploader une image");
return false;
}
else{
// Il existe une image dans bdd donc je fais un edit donc pas obliger de poste une image
return true;
}
}
}
但是如果我想将我的回调函数放在MY_Form_validation文件中,它就不起作用...... 我在我的控制器中为我的article_new函数执行此操作(删除回调):
$this->form_validation->set_rules('image','Image','handle_upload['.$allowed_types.','.$max_size.','.$max_filename.']')
我的MY_Form_validation文件:
class MY_Form_validation extends CI_Form_validation{
function __construct($config = array()){
parent::__construct($config);
}
function handle_upload ...
答案 0 :(得分:0)
如果您使用自己的函数handle_upload扩展Form_validation,则无需编写"回调_" - 只是handle_upload
使用callback_your_method你需要在控制器中写入方法" your_method"
或者更好的使用下划线写方法,如_handle_upload,因此在验证规则中它将是" callback__handle_upload" - 这种方法不会直接从浏览器访问
祝你好运!:)P.S。 MY_Form_validation类必须在库中