2017-10-27 4 views
0

제 양식에는 사용자가 XML 파일을 업로드 할 수있는 필드가 있습니다. 그러나 XML을 제출하기 전에 XML의 유효성을 검사해야합니다. 어떻게 이것을위한 검증 기능을 만들 수 있습니까?Yii2 : 제출하기 전에 파일의 내용을 확인하십시오.

내보기 :

... 
<?= $form->field($model, 'upload_file')->fileInput(['accept' => 'text/xml']) ?> 
... 

내 모델 :

... 
['upload_file', 'validateFile'], 
... 
public function validateFile($attribute, $params) 
{ 
// TODO 
} 
... 

내가 액세스 컨트롤러에서 XML 파일의 내용을 확인하지만, 파일이 제출 한 후이 유효성 검사가 이미 있습니다. .. 제출하기 전에 싶었어! 컨트롤러 Exemple :

if ($model->load(Yii::$app->request->post()) { 
    $file = UploadedFile::getInstance($model, 'upload_file'); 
    $file = file_get_contents($file->tempName); 
    // xml of the upload_file 
    $xml = simplexml_load_string($file); 

나는 유효성 검사 기능, 상단에이 코드를 전달하려는.

public function rules() 
{ 
    return [ 
      [['uploaded_file'], 'file', 'skipOnEmpty' => false, 'extensions' => 'xml', 'mimeTypes' => 'text/xml, application/xml'], 
    ]; 
} 
+0

내가 "ActiveForm을"의 "validationUrl"를 사용하려고하지만, 파일, 단지 텍스트를 전송하지 않습니다 : – Giest

+0

프런트 엔드 사이트에서 유효성을 검사 할 수 없습니다. fileInput은 html 태그 만 필요하므로 validate가 필요한 경우 javascript 코드를 추가해야합니다. 그래서 Yii2 파일 입력을 사용하는 것이 좋습니다, 그것은 더 많은 기능을 가진 위젯을 향상 시켰습니다. https://github.com/kartik-v/yii2-widget-fileinput 여기에 있습니다. – dungphanxuan

답변