Валидация загруженного файла

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
GHopper
Сообщения: 83
Зарегистрирован: 2017.06.05, 10:53

Валидация загруженного файла

Сообщение GHopper »

Здравствуйте.

Есть модель, одно из свойств которой яляется файлом. В представлении имеем

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

<?= $form->field($model, 'logo')->fileInput() ?>
При загрузке в контроллере вызывается $model->validate() и, в случае успеха, все сохраняется в БД. В модели есть правило для проверки файла:

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

[['photo'], 'file', 'extensions' => 'png, jpg'],
Все работало исправно, пока не появилось желание добавить валидацию уникальности файла в файловой системе. Но здесь возникла проблема:

Для свойства с типом file нельзя добавить inline validation.
Т.е. следующее правило будет просто проигнорироваться

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

...
[['photo'], function ($attribute, $params, $validator) {
                $this->addError($attribute, 'Not unique');
            }, 'skipOnError' => false],
...
При этом, если это правило навесить на другое поле (не file), то все работает исправно.

Вопрос: как для свойства типа file добавить кастомное правило валидации?
Ответить