Size: a a a

2021 February 15

Д

Дмитрий in Yii Framework 3
Дмитрий
хм.. а как быть сейчас с FormModel . если тип поля int, при load пришла строка, то она кастится в 0.
Она кастится к int, разве нет?
источник

Д

Дмитрий in Yii Framework 3
источник

Д

Дмитрий in Yii Framework 3
Дмитрий
Она кастится к int, разве нет?
да, к int. а потом уже проходит валидация что 0 это int. а в реквесте пришло может вообще "0drf34343dfdsf"
источник

СП

Сергей Предводителев... in Yii Framework 3
По идее в форме все строками должно быть
источник

Д

Дмитрий in Yii Framework 3
Зачем ставить int на свойство и хотеть обработать ситуацию с 0drf34343dfdsf?
источник

Д

Дмитрий in Yii Framework 3
Сергей Предводителев
По идее в форме все строками должно быть
ну я откуда знаю что мне прийдет в post-e
источник

Д

Дмитрий in Yii Framework 3
если это строка не прошла валидацию - мне надо об этом сказать.
источник

Д

Дмитрий in Yii Framework 3
а получается мы сначала кастим строку к типу, а уже потом валидация
источник

Д

Дмитрий in Yii Framework 3
Ты хочешь иметь валидацию типа?
источник

СП

Сергей Предводителев... in Yii Framework 3
Дмитрий
а получается мы сначала кастим строку к типу, а уже потом валидация
Все правильно, сначала наполняем модель, а потом валидируем
источник

СП

Сергей Предводителев... in Yii Framework 3
Вообще без типов делай свойства и норм.
источник

СП

Сергей Предводителев... in Yii Framework 3
🙂
источник

Д

Дмитрий in Yii Framework 3
И без валидации 🙂
источник

СП

Сергей Предводителев... in Yii Framework 3
Ну норм же - свойства mixed - прилетает все что угодно, а потом уже валидируем
источник

Д

Дмитрий in Yii Framework 3
Сергей Предводителев
Вообще без типов делай свойства и норм.
8ка ругается, You must specify the type hint for "amount" property in ... даже без strict_types . сделал пока string все. в геттерах кастую к нужному типу. они явно вызовутся после валидации.
источник

Д

Дмитрий in Yii Framework 3
ну просто, хм.. может сначала валидировать то что пришло. а уже потом заполнять форм-модель уже правильными данными?
источник

Д

Дмитрий in Yii Framework 3
не, я вообще не претендую на правильность.. у меня тест просто упал не  стой ошибкой ,что предполагалась. он попытался аккаунт с id 0 найти. хотя там была строка.
источник

Д

Дмитрий in Yii Framework 3
Сейчас в этом решении есть небольшая проблема:
1. Вызов формы выглядит так: $form->load($req) && $form->validate()
Валидация в принципе стоит в другом запросе
2. load может быть вызван без валидации и это нормальное поведение. То есть сюда кастомить "временное хранилище" не особо вариант

Если делать $form->validate($req) && $form->load($req), то будет уже лучше. Но я пытался отказаться от сервиса в формах и запилил PR на $validator->validate($form). Поэтому либо кастомить load, либо придумывать новый flow для работы с формами.
источник

Д

Дмитрий in Yii Framework 3
Создай issue с примерами твоих форм и твоего флоу. Подумаем, какое решение можно будет сделать.
источник

Д

Дмитрий in Yii Framework 3
Дмитрий
Сейчас в этом решении есть небольшая проблема:
1. Вызов формы выглядит так: $form->load($req) && $form->validate()
Валидация в принципе стоит в другом запросе
2. load может быть вызван без валидации и это нормальное поведение. То есть сюда кастомить "временное хранилище" не особо вариант

Если делать $form->validate($req) && $form->load($req), то будет уже лучше. Но я пытался отказаться от сервиса в формах и запилил PR на $validator->validate($form). Поэтому либо кастомить load, либо придумывать новый flow для работы с формами.
надо подумать. про $validator->validate -  я помню . это вроде хорошо.
источник