Обязательность заполнения файла в форме?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
za4me
Сообщения: 152
Зарегистрирован: 2016.06.26, 15:29
Контактная информация:

Обязательность заполнения файла в форме?

Сообщение za4me » 2017.05.02, 10:57

Добрый день. Подскажите, пожалуйста, можно ли данную задачу реализовать средствами yii2?

1. Имеется стандартная модель с аттрибутами:
1. iconFile
2. icon

Код: Выделить всё

[['iconFile'], 'file', 'skipOnEmpty' => true, 'extensions' => 'png, jpg'],
Использую kartik-v/yii2-widget-fileinput, загрузка файлов работает отлично (в форме поле iconFile, строку названия изображения сохраняю в icon), все ок, кроме одного.

Мне необходимо указать 'required' для iconFile и если для actionCreate это правило будет отрабатывать отлично, то для actionUpdate будет выведена ошибка "поле необходимо заполнить" это логично т.к. поле iconFile пустое, но мне необходимо что-бы 'requred' не отрабатывало но iconFile если icon !== null.

Так-же есть вопрос по удалению файла. В данный момент суть такая:
1. Общая форма с полями.
2. При клике на кнопку удалить вызывается этот action, который грузит модель по id:

Код: Выделить всё

public function actionDeleteIcon()
{
    $id = Yii::$app->request->post('key');

    $model = $this->findModel($id);
    $model->scenario = Offers::SCENARIO_DELETE_ICON;

    if (DeleteFile::deleteFile($model->icon)) {
        $model->icon = null;

        if ($model->save()) {
            return true;
        }
    }

    return false;
}
В итоге фактически в БД я имею строку с icon = null, а в п.1. формы icon у меня все еще название изображения.

Всем спасибо за советы.

Аватара пользователя
vitalik1183
Сообщения: 1673
Зарегистрирован: 2014.07.01, 08:42

Re: Обязательность заполнения файла в форме?

Сообщение vitalik1183 » 2017.05.02, 15:13

используйте сценарии для create и update
Yii2!

Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Обязательность заполнения файла в форме?

Сообщение Nerf » 2017.05.02, 15:49

Добавьте логику when и whenClient. Сценарии тут почти не помогут.

Аватара пользователя
vitalik1183
Сообщения: 1673
Зарегистрирован: 2014.07.01, 08:42

Re: Обязательность заполнения файла в форме?

Сообщение vitalik1183 » 2017.05.02, 16:13

Nerf писал(а):
2017.05.02, 15:49
Добавьте логику when и whenClient. Сценарии тут почти не помогут.
почему не помогут? в чем проблема указать что для update поле картинки не является обязательным к заполнению?
Yii2!

Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Обязательность заполнения файла в форме?

Сообщение Nerf » 2017.05.02, 22:35

vitalik1183 писал(а):
2017.05.02, 16:13
Nerf писал(а):
2017.05.02, 15:49
Добавьте логику when и whenClient. Сценарии тут почти не помогут.
почему не помогут? в чем проблема указать что для update поле картинки не является обязательным к заполнению?
Если нет удаления. Тут ударение на "почти". Кейс же в том, что картинка обязательна, если еще не загружена...

Аватара пользователя
za4me
Сообщения: 152
Зарегистрирован: 2016.06.26, 15:29
Контактная информация:

Re: Обязательность заполнения файла в форме?

Сообщение za4me » 2017.05.03, 12:07

Кейс же в том, что картинка обязательна, если еще не загружена.
Да.

Но меня смущает сам цикл работы, слишком он объемный.

1. Загрузка модели на редактирование.
2. При удалении загрузка этой же модели, удаления изображения, сохранение модели.
3. При сохранении модели из п.1. снова дергать эту же строку из БД и смотреть есть ли изображение. Нет - нельзя сохранять, да - можно.

Жуть сколько много пунктов.

Ответить