0
私のフォームには、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);
私は、検証機能に、一番上にあるこのコードを渡したいです。
を私は「のActiveForm」で「validationUrl」を使用しようとしたが、それは、ファイル、テキストだけを送信しません。 – Giest
フロントエンドサイトでは検証できません。 fileInputはhtmlタグのみなので、必要な場合はjavascriptコードを追加する必要があります。だから私はYii2ファイル入力を使用することをお勧めします、それはより多くの機能とウィジェットを強化しました。ここはhttps://github.com/kartik-v/yii2-widget-fileinputです – dungphanxuan