Yii2:在提交之前验证文件的内容

时间:2017-10-27 22:11:12

标签: yii2

在我的表单中,我有一个字段供用户上传XML文件。但在提交XML之前,我必须验证它。如何为此创建验证功能?

我的观点:

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

我的模特:

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

我可以访问并验证控制器中XML文件的内容,但是在提交文件之后已经进行了验证...我想在提交之前进行验证! 在控制器中执行:

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);

我想将此代码传递给验证函数。

1 个答案:

答案 0 :(得分:0)

将此添加到您的模型规则中:

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