Я создаю активную форму Yii2 для создания и редактирования продукта и хочу, чтобы страница также управляла изображениями. Я хочу иметь возможность загружать (добавлять) изображения для продукта, а затем иметь сортируемую область предварительного просмотра, где изображения отображаются и могут быть отсортированы в правильном порядке. Мой план состоит в том, чтобы загружать файлы через ajax/pjax во временную папку, из которой будет извлекаться форма, чтобы отображать их в сортируемой области, и после сохранения модели изображения будут перемещены/имены соответственно.
Сначала я использую виджет Kartik FileInput (который может быть ненужным) и Сортируемый ввод Kartik для изменения порядка изображений.
Я считаю, что могу справиться с загрузкой и перемещением/переименованием файлов, мой вопрос заключается в том, как загрузить изображения отдельно от остальной части формы, а затем заставить ActiveForm вытащить их в сортируемую область ввода? Кроме того, я также хочу иметь возможность удалять из него изображения (с маленьким крестиком в углу миниатюры). Я знаком с использованием pjax для обертывания представлений сетки и даже с использованием pjax для отправки формы методу pjax (для использования внутри модального режима), но не уверен, как использовать его внутри другой формы и заставить другую форму динамически загружать картинки.
Чтобы уточнить, у меня есть Product
, который расширяет ActiveRecord
, и ImageForm
, который расширяет Model
. Затем у меня есть ProductController
со следующим действием Create
:
public function actionCreate()
{
$model = new Product();
$images = new ImageForm();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
}
return $this->render('create', [
'model' => $model,
'images' => $images,
]);
}
Моя цель состоит в том, чтобы иметь возможность загружать изображения (через ImageForm
) во временное расположение, которое отображается в представлении create
Продукта. Однако в настоящее время использование функции загрузки в виджете просто перезагружает страницу, и изображения исчезают.
formModel
, который расширяетyii\base\Model
, чтобы загрузить файл с помощьюkartik\FileInput
. Я не вижу никаких проблем в том, что ваша обычная форма будет иметь отдельную модель, которая расширена от\yii\db\ActiveRecord
, вы можете использовать события, предоставляемые виджетомFileInput
, для обновленияdiv
в котором вы хотите показывать загруженные файлы или сделать отдельныйaction
в вашемcontroller
который вызывается этимevent
с помощьюajax
- person Muhammad Omer Aslam   schedule 03.02.2018kartik\FileInput
, вам не нужно писать javascript для публикации изображения, у него есть возможность инициировать загрузку, как только вы выберете файл, и поскольку он используетActiveForm
иmodel
, так что да, этоyii
способ загрузки, он будет даже показать вам проверку модели, если она не удалась. нравится, если ограничение размера увеличивается - person Muhammad Omer Aslam   schedule 04.02.2018$form->field()->widget
, нужно ли мне встраивать еще одну активную форму в первую, чтобы это сработало? И как только загрузка будет завершена, как я могу запустить обновление? Это пользовательский javascript или есть способ запустить его иначе? Я собираюсь немного поработать над этим и обновить свой вопрос по мере необходимости. - person sharf   schedule 04.02.2018FileInput
должен использовать тот жеActiveForm
, но другой объект модели, который будет принадлежать вашему классуUploadForm
, то есть$form->field('imagefileName',$uploadModel)->widget()
- person Muhammad Omer Aslam   schedule 04.02.2018$model
, представляющий продукт (ActiveRecord), и$images
, представляющий форму изображения (модель), и когда я нажимаю кнопку загрузки на виджете, форма отправляется (или завершается ошибкой проверки в других полях), и страница обновляется с моим вводите данные, поле загрузки чистое, а изображения никуда не загружались. - person sharf   schedule 04.02.2018uploadUrl
для fileInput, чтобы он не отправлял вашу форму - person Muhammad Omer Aslam   schedule 04.02.2018file_id
, и я до сих пор не понимаю, как это вызовет обновление родительской формы и получение изображений после их обработки. - person sharf   schedule 04.02.2018