Страница 1 из 1

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

Добавлено: 2017.05.02, 10:57
za4me
Добрый день. Подскажите, пожалуйста, можно ли данную задачу реализовать средствами 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 у меня все еще название изображения.

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

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

Добавлено: 2017.05.02, 15:13
vitalik1183
используйте сценарии для create и update

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

Добавлено: 2017.05.02, 15:49
Nerf
Добавьте логику when и whenClient. Сценарии тут почти не помогут.

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

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

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

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

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

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

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

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

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