Не работает (или некорректно работает) валидация файлового поля в форме.
Сама форма:
{{ form_ajax('onSendPointForm', { 'data-request-validate': '', 'data-request-files': '', 'data-request-loading': '#loadingIndicator' }) }}
<input type="file" name="banner" id="inputImage" accept="image/jpg, image/png">
<span class="invalid-feedback" data-validate-for="banner"></span>
<button type="submit" class="btn btn-primary">Отправить</button>
{{ form_close() }}
Функция в компоненте:
use Validator;
use ValidationException;
...
public function onSendPointForm()
{
$data = post();
$rules = [
'banner' => 'required|image|mimes:jpeg,png|max:1024'
];
$messages = [
'banner.required' => 'Добавьте баннер или просто логотип',
'banner.image' => 'Неверный формат файла',
'banner.mimes' => 'Неверный формат файла',
'banner.max' => 'Превышен допустимый размер файла (1 Мб)'
];
$validation = Validator::make($data, $rules, $messages);
if ($validation->fails()) {
throw new ValidationException($validation);
}
$point = Point::make();
if (Input::hasFile('banner')) {
$point->banner = Input::file('banner');
}
$point->save();
return ['#pointForm' => $this->renderPartial('@pointFormSendSuccess.htm')];
}
Взаимодействуем формой (изображение в формате jpg):
1) не добавляем изображение, нажимаем отправить - ошибка 'banner.required' (в .invalid-feedback получаем об этом сообщение)
2) добавляем изображение, нажимаем отправить - ошибка 'banner.required' (в .invalid-feedback получаем об этом сообщение)
Если убираем валидацию, моделька создаётся без проблем и картинка цепляется (в файле модели указано public $attachOne = ['banner' => 'System\Models\File']😉.
Как заставить работать валидацию? Или через Ajax она работать не будет? Или в компоненте валидация работает ограниченно и только с текстовыми полями? Или сегодня Весы встали в созвездии Водолея и поэтому не работает? Потому что гладиолус O_o?