Skip to content
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

Open
wants to merge 1 commit into
base: 1.0
Choose a base branch
from

Conversation

anisimovt
Copy link
Contributor

subj

@dovg
Copy link
Member

dovg commented Dec 11, 2012

В мастер надо как-то по-другому вливать. Там статичные енумы.

@AlexeyDsov
Copy link
Member

А что не так? Тот же PrimitiveIdentifier работает так же: в случае если в базе не нашелся объект, но при этом в scope был соотвествующий primitiveName - imported ставится в true.

По коду imported это признак не было ли значение удачно импортировано, а была ли вообще попытка импортировать его - удачно или нет.

@klestoff
Copy link
Contributor

Проблема в getActualValue и getSafeValue. Если мы выставим default. Мы не сможем его получить данными методами. Получим int, который пришел с запросом.

Или данную ситуацию валиднее обрабатывать так?

if (($value = $form->getValue('enum')) === null)
    $value = $form->get('enum')->getDefault();

@AlexeyDsov
Copy link
Member

getSafeValue возвращает дефолтное значение если в scope впринципе не было значения для примитива. Должно ли оно возвращать дефолтное значение если попытка импорта была, но окончилась не успешно - для меня не очевидно. В BasePrimitive почему-то сделано что б не возвращало. И если делать фикс, то именно в нем - но надо ли - это для меня вопрос.

@AlexeyDsov
Copy link
Member

В 5.3, кстати, можно более коротко написать то что хочется:

$form->getValue('enum') ?: $form->getDefaultValue('enum')

@anisimovt
Copy link
Contributor Author

А зачем кому-то знать была ли попытка импорта или нет. Как для вас изменится работа с примитивом если вы будет знать что значение не импортировали? Кто-нибудь когда-нибудь использовал isImported() в таком значении?

@AlexeyDsov
Copy link
Member

Форма использует isImported в importMore, importOneMore

@anisimovt
Copy link
Contributor Author

ок, использует, это я знаю. А какой кейс - если первый импорт был не успешен, но попытка была, то все остальные импортировать нельзя, как его применить?

@AlexeyDsov
Copy link
Member

Если в первом источнике были невалидные данные, то из второго источника импорта уже не будет, дабы не проглатывать ошибку. Почему невалидный импорт молча должен проглатываться?

@anisimovt
Copy link
Contributor Author

А что за логика такая - что данные приходят еще в одном источнике о котором вообще никто не узнает, т.к. форме будет на них просто наплевать?

@AlexeyDsov
Copy link
Member

Форме наоборт не наплевать на ошибки. Но она уже импортировала данные из первого источника пусть даже какие-то неуспешно. Вот если бы в первом источнике не было данных, то использовались бы данные из второго.

@anisimovt
Copy link
Contributor Author

Если вы предполагаете 2 источника данных и вам важно знать были ли ошибки в первом, и что-то сделать со вторым, почему не импортить первый источник, проверять ошибку и потом импортить 2й? В вашем случае никто никогда не узнает что были еще данные из второго источника, потому что форма их просто не заметит.

@AlexeyDsov
Copy link
Member

Другой вариант - если все равно из какого истоничка данные, почему не импортировать как один:

$form->importValue(ArrayUtils::mergeRecursiveUnique($get, $post));

@anisimovt
Copy link
Contributor Author

Это не одно и тоже, если в первом будут правильные данные а во втором не правильные - ваш код импортит неправильные, например.

@AlexeyDsov
Copy link
Member

Ок, не правильный пример привел. Тогда какое предложение? Изменить в importMore и importOneMore?

@pupkinV pupkinV mentioned this pull request Dec 19, 2012
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants