콜백시 파일 업로드 유효성 검사기를 설정하는 데 문제가 있습니다.sfValidatorFile을 사용하는 symfony setPostValidator
나는 이것을 달성 할 :
나는 사용자가 업로드하는 파일의 종류를 선택하고 파일을 업로드 한 형태를 가지고있다. 그래서 형식으로 "img"를 선택한 경우에 이미지를 처리하기 위해 유효성 검사기를 설정하고 "pdf"를 선택한 경우 pdf로 설정하려고합니다.
또한 유형에 따라 MIME 유형과 경로 및 validatedFileClass를 지정하려고합니다.
나는이 시도 ...하지만 난 그것을$this->validatorSchema->setPostValidator( new sfValidatorCallback(array('callback' => array($this, 'validateUploadedFiles'))) );
에게 기능을 작동시킬 수 없습니다
이 기능은 URL을 수신 public function validateUploadedFiles($form_validator, $values){
$this_year = date("Y");
$this_month = date("m");
$basic_validator = array(
'required' => true,
'path' => sfConfig::get('sf_upload_dir').'restaurant/media/'.$this_year.'/'.$this_month.'/'
);
$doc_validator = $video_validator = $img_validator = $pdf_validator = $basic_validator;
$pdf_validator['mime_types'] = array ('application/pdf');
$doc_validator['mime_types'] = array ('application/msword', 'application/vnd.openxmlformats');
$img_validator['mime_types'] = 'web_images';
//$img_validator['validated_file_class'] = 'imgHandling';
$video_validator['mime_types'] = array('video/mpeg', 'video/3gpp', 'video/mp4', 'video/quicktime');
switch($values['type']):
case 'pdf' : $validator = $pdf_validator; break;
case 'img' : $validator = $img_validator; break;
case 'word' : $validator = $doc_validator; break;
case 'video' : $validator = $video_validator; break;
endswitch;
//$form->getValidatorSchema()->offsetUnset('url') ;
//print_r($validator_fields);
$validator = new sfValidatorFile($validator);
$validator_schema = new sfValidatorSchema();
$validator_schema->offsetSet('url', $validator);
//$validator_fields = $form->getValidatorSchema()->getFields();
$schema = parent::getValidatorSchema();
$schema->offsetUnset('url') ;
$schema->offsetSet('url', $validator);
// $path = sfConfig::get('sf_upload_dir').'restaurant/media/'.$this_year.'/'.$this_month.'/';
// $values['url'] = new sfValidatedFile($values['url']['name'], $values['url']['type'], $values['url']['tmp_name'], $values['url']['size'] , $path);
//TODO get this url value run through the new added validator
//$values['url'] = $validator_schema->clean(array('url' => $values['url']));
return $values;
}
내가 직면하고있는 문제가 있음 값을 배열로 가져오고 유효성 검사기 스키마를 업데이트하더라도 url의 유효성을 검사하지 않고 객체 저장 메서드에 배열로 전송합니다. 그래서 최선의 해결책에 대한