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