При отправке формы через ActiveForm. Смысл такой что нужно только отправить изображение на сервер. Чтобы Не пытаться делать все руками через $_FILES я пытаюсь все реализовать динамически, без перезагрузки страницы.
Вот форма
<?php $form = \yii\widgets\ActiveForm::begin([
'id' => 'avatar-form',
'action' => Url::to(['profile/upload-avatar', 'id' => $user->id]),
'options' => [
'enctype' => 'multipart/form-data',
'name' => 'avatar-form'
],
]) ?>
<?= $form->field($user, 'file')->fileInput(['class' => '_disabled', 'id' => 'uploadAvatar']); ?>
<?= \yii\helpers\Html::submitButton('отправить', ['id' => 'avatar-form_button']) ?>
<?php \yii\widgets\ActiveForm::end() ?>
Ну в контроллере наверное не нужно писать, наверное только сама форма нужна
/**
* @brief Загрузка аватарки
* @param $id
* @return bool
*/
public function actionUploadAvatar($id)
{
if (\Yii::$app->request->isAjax) {
$model = User::findOne($id);
$model->scenario = User::SCENARIO_UPLOAD_AVATAR;
$model->file = UploadedFile::getInstance($model, 'file');
$model->avatar = $model->file->extension;
if ($model->save()) {
$model->uploadFile($id);
}
}
}
И пока что простенький Js
$('#avatar-form').submit(function (e) {
debugger;
e.preventDefault();
console.log(form);
});
В ответ получаю
w.fn.init [form#avatar-form]
index:1751 w.fn.init [form#avatar-form]
Если смотреть event то они отличаются. У самого первого имеется originalEvent