在我的表单中,我有一个字段供用户上传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);
我想将此代码传递给验证函数。
答案 0 :(得分:0)
将此添加到您的模型规则中:
public function rules()
{
return [
[['uploaded_file'], 'file', 'skipOnEmpty' => false, 'extensions' => 'xml', 'mimeTypes' => 'text/xml, application/xml'],
];
}