-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix non existing enumeration import #156
base: 1.0
Are you sure you want to change the base?
Conversation
В мастер надо как-то по-другому вливать. Там статичные енумы. |
А что не так? Тот же PrimitiveIdentifier работает так же: в случае если в базе не нашелся объект, но при этом в scope был соотвествующий primitiveName - imported ставится в true. По коду imported это признак не было ли значение удачно импортировано, а была ли вообще попытка импортировать его - удачно или нет. |
Проблема в getActualValue и getSafeValue. Если мы выставим default. Мы не сможем его получить данными методами. Получим int, который пришел с запросом. Или данную ситуацию валиднее обрабатывать так? if (($value = $form->getValue('enum')) === null) $value = $form->get('enum')->getDefault(); |
getSafeValue возвращает дефолтное значение если в scope впринципе не было значения для примитива. Должно ли оно возвращать дефолтное значение если попытка импорта была, но окончилась не успешно - для меня не очевидно. В BasePrimitive почему-то сделано что б не возвращало. И если делать фикс, то именно в нем - но надо ли - это для меня вопрос. |
В 5.3, кстати, можно более коротко написать то что хочется: $form->getValue('enum') ?: $form->getDefaultValue('enum') |
А зачем кому-то знать была ли попытка импорта или нет. Как для вас изменится работа с примитивом если вы будет знать что значение не импортировали? Кто-нибудь когда-нибудь использовал isImported() в таком значении? |
Форма использует isImported в importMore, importOneMore |
ок, использует, это я знаю. А какой кейс - если первый импорт был не успешен, но попытка была, то все остальные импортировать нельзя, как его применить? |
Если в первом источнике были невалидные данные, то из второго источника импорта уже не будет, дабы не проглатывать ошибку. Почему невалидный импорт молча должен проглатываться? |
А что за логика такая - что данные приходят еще в одном источнике о котором вообще никто не узнает, т.к. форме будет на них просто наплевать? |
Форме наоборт не наплевать на ошибки. Но она уже импортировала данные из первого источника пусть даже какие-то неуспешно. Вот если бы в первом источнике не было данных, то использовались бы данные из второго. |
Если вы предполагаете 2 источника данных и вам важно знать были ли ошибки в первом, и что-то сделать со вторым, почему не импортить первый источник, проверять ошибку и потом импортить 2й? В вашем случае никто никогда не узнает что были еще данные из второго источника, потому что форма их просто не заметит. |
Другой вариант - если все равно из какого истоничка данные, почему не импортировать как один: $form->importValue(ArrayUtils::mergeRecursiveUnique($get, $post)); |
Это не одно и тоже, если в первом будут правильные данные а во втором не правильные - ваш код импортит неправильные, например. |
Ок, не правильный пример привел. Тогда какое предложение? Изменить в importMore и importOneMore? |
subj