
Big_Shark
27.01.2017
01:34:26

Taras
27.01.2017
01:35:07
Чувак, Иисуса в этом возрасте уже распяли!.. А меня пока не за что...

Big_Shark
27.01.2017
01:35:29

Google

Taras
27.01.2017
01:35:45
можно, но ведь как видишь, не исправляется :(
Кстати, ExclusionPolicy не фурычат в 3.1...
т.е. по умолчанию насколько понимаю, отключео все, а дальше только с группами...
чувствую что в тестах еще и формат JSON прийдется чекать
в принципе, с группами жить можно и без exclusionpolicy...
хотя нет... exclusion strategy сейчас как раз работает как и должно быть... совместно с Expose()
О! Тогда совсем хорошо... в трейтах работает тоже.

Алексей
27.01.2017
10:46:48


Taras
27.01.2017
10:52:33
Очень простой эксперимент:
1. Чистая инсталляция;
2. Устанавливаем jmsserializerbundle + doctrinemigrationsbundle по дефолту;
3. Создаем объект: Person с полями:
id, first_name, last_name
4. Устанавливаем ExclusionPolicy("all") и группы:
@JMSSerializer/Expose()
@JMSSerializer/Groups({"agroup"})
@JMSSerializer/Groups({"bgroup"})
agroup - на полях id и first_name, bgroup - на полях first_name, last_name;
5. В контроллере вызываем сериализацию, с контекстом и проверяем обе группы:
->setGroups(array(''agroup'')) - должно вернуть первые два поля только;
->setGroups(array(''bgroup'')) - должно вернуть вторые два поля;
->setGroups(array()) - не должно вернуть ничего;
Эта хрень проверена на 2.8, 3.1, 3.2 версиях, для чистоты - ничего не копировалось, просто накатывалось поверх. Лезть колупаться что-там где не работает - нет времени просто. По факту, то что работает в 2.8, 3.1 не работает в 3.2... Честно говоря, не особо уверен и в 3.1... но сейчас уже глубокие тесты буду проводить... Но посматриваю в сторону фрактала...


Алексей
27.01.2017
10:54:17
Возможно, это связано с exclusion policy. У меня в том проектом одни DTO-шки были и везде exclusion_policy стоит в none. И маппинг в YAML, если что.
Я помню при обновлении одного из проектов наткнулся на то, что JMS конфликтовал в каком-то стороннем бандле с симфоневским сериализатором. И у первого нужно было выключить короткий алиас serializer. Впрочем, это не та проблема. Но тоже на 3.2 вылезла.
Лечится просто:
jms_serializer:
enable_short_alias: false
И из контейнера дёргать по jms_serializer.

Google

Taras
27.01.2017
10:58:03
у меня в конфиге сериалайзер симфоневский вообще отрублен

Nik
27.01.2017
10:58:12

Taras
27.01.2017
10:58:13
#serializer: { enable_annotations: true }

Алексей
27.01.2017
10:58:32
Но 3.1 хотя бы работает. В 3.0 вообще есть баг из-за которого Twig не заводится :)

Taras
27.01.2017
10:59:39
меня всегда смущало слово "хотя бы"
есть два варианта: работает - не работает.
меня несколько смущает, то что LTS даже в ближайших планах отсутствует

Алексей
27.01.2017
11:01:44

Taras
27.01.2017
11:02:06
3.2 не имеет смысла юзать ибо не работает

Алексей
27.01.2017
11:02:23
У меня работает. Но в твоём кейсе - возможно. Не проверял.

Taras
27.01.2017
11:02:36
а чем пользуешься в качестве сериализатора?

Алексей
27.01.2017
11:02:39
issue есть в репе JMSS?
Ну и у меня он больше для десериализации используется, чем для сериализации.

Taras
27.01.2017
11:03:18
none - не работает так же. Группы как таковые не работают вовсе.

Алексей
27.01.2017
11:03:42
Если будет время - попробую у себя проверить.
Пробовал с YAML-конфигом?

Taras
27.01.2017
11:03:53
угук, было бы инетресно.
Нет, с YAML-конфигом не пробовал... кстати хорошая идея.

Google

Taras
27.01.2017
11:04:27
Ибо аннотации не всегда адекватно работают у JMS...

Алексей
27.01.2017
11:04:37
У меня просто такие конфиги:
https://bitbucket.org/skobkin/point-tools/src/013fb3ef3d1f92e5fc8799135fb394e4fec9e237/src/Skobkin/Bundle/PointToolsBundle/Resources/config/serializer/DTO.Api.User.yml?at=master&fileviewer=file-view-default

Taras
27.01.2017
11:05:24
Надо попробовать... минуту...
А как указать чтобы оно с YAML конфиг читало?.. :)
Понимаю - смешно, но блин, никогда с ними не работал.
Просто впихнуть в resources/config/serializer ?

Алексей
27.01.2017
11:13:31
Да. И именовать таким образом чтобы имя конфига включало неймспейс через точки.
Ну, короче, либо из доки, либо из моего конфига посмотри.

Taras
27.01.2017
11:19:51
угук, разгреб, забыл кеши почистить просто...
`$data = $serializer->serialize($person, 'json', SerializationContext::create()
->setGroups(array('short-data')));`
AppBundle\Entity\Person:
exclusion_policy: all
properties:
id:
type: integer
groups: [short-data]
first_name:
type: string
groups: [short-data, full-data]
last_name:
type: string
groups: [full-data]
таки не фурычит...

Алексей
27.01.2017
11:21:41
А expose?

Taras
27.01.2017
11:21:55
пробовал, та же хрень
выводит почему-то только ID и все.

Алексей
27.01.2017
11:23:10
Забавно. Учитывая, что на нём и нет expose, и есть ещё свойства с short-data.
1. А если добавить ещё свойство только с одной группой short-data? Оно появится?
2. Если сделать доступ через public_method как у меня?

Taras
27.01.2017
11:26:05
убрал группу с id - оно пропало;
убрал группу full-data с first_name - ноль эмоций;
доступ через public_method - пробовал, та же история )

Алексей
27.01.2017
11:26:37
Страннота.

Taras
27.01.2017
11:27:35
та же фигня на 3.1 - работает

Google

Алексей
27.01.2017
11:31:26
Баги-то в репе JMSS искал?

Taras
27.01.2017
11:32:28
Неа пока нет

Алексей
27.01.2017
11:32:36
Я бы с этого начал.

Denis denya Voskoboinik
27.01.2017
11:44:00
ребят а кто как использует симфониевский сериалазер?
Чтоб его использовать - нужно писать на каждый объект нормализатор+ 3 строчки кода
$normalizers = new ObjectNormalizer;
$serializer = new Serializer([$normalizers], [new JsonEncoder()]);
$serializer->serialize($entities, 'json'));
Помоему как-то неудобно, кто во что оборачивает? отдельный сервис или метод в BaseController или трейт?

Sergey
27.01.2017
11:44:30
из контейнера бери сериалайзер и все
а тегами подключай к нему нормалайзеры и че там еще надо

Taras
27.01.2017
11:53:54
В респонсы свои обернуть и все.

Denis denya Voskoboinik
27.01.2017
11:55:19

Admin
ERROR: S client not available

Taras
27.01.2017
11:59:35
блин, вот надо учиться объяснять, что хотел сказать... ) У меня с этим проблема.
Я имею ввиду сделать набор своих респонсов. В итоге у тебя выйдет нечто:
return MyResponse\EntityResponse($this->serializer, 200);
а в EntityResponse уже свои три строчки ну и остальное... )

Denis denya Voskoboinik
27.01.2017
12:00:28
ок, буду пробовать по разному)

Taras
27.01.2017
12:13:46
Решил четта проверить вообще по версиям SF... оказывается SF только ноябрьская 3.4 будет в LTS.

Sergey
27.01.2017
12:15:02
ну да, последняя в цикле
потом 4.0 только

Taras
27.01.2017
12:34:24
так ни одной нету LTS, кроме 3.4...
ну не суть столь важно... у меня стоит сейчас вопрос, выпнуть нахрен JMS\Serializer и юзать стандартный Serializer или нет... )

Big_Shark
27.01.2017
12:35:34
ответ да

Taras
27.01.2017
12:36:11
Я тоже к нему склоняюсь... "але яка тому розумна альтернатива"?
не буду ли я скучать по нему? ;)

Google

Big_Shark
27.01.2017
12:37:35
ну ты скучаешь по пхп4?

Taras
27.01.2017
12:38:16
Да, но вот, например, какая замена будет у virtual property?
и какая замена будет в @Type
вот эти три вещи мня беспокоят, блин

Sergey
27.01.2017
12:49:01
через неделю нас ждет https://github.com/sebastianbergmann/phpunit/blob/master/ChangeLog-6.0.md

Pavel
27.01.2017
14:01:34
* PHPUnit's units of code are now namespaced

da horsie
28.01.2017
07:27:49
Если вы, как и я, использовали dotdeb для установки php, вы делали неправильно. 7.1 в dotdeb не будет. https://www.dotdeb.org/2017/01/27/php-7-1-dotdeb/

Sergey
28.01.2017
07:28:24
docker pull php:7.1-fpm

Big_Shark
28.01.2017
07:28:39
что такое dotdeb вообще?

da horsie
28.01.2017
07:29:09
Это альтернативная репа с бекпортами для дебиана

Taras
28.01.2017
11:11:45
Всем бодрый день.
оказалось что virtualproperties и type тоже можно правильно съэмулировать с сериалайзером... пытаюсь понять что еще не хватает от JMS/Serializer
возможно глупый вопрос, но... есть отношение ManyToOne... если устанавливать Serializer на этом поле, то оно вернет весь объект, а как заставить чтобы возвращало только ID на этом поле?
хотя я понимаю что getUser например возвращает объект весь... неужели надо делать виртуальное только поле, которое будет возвращать ID-шник только?

Sergey
28.01.2017
19:15:33
> что еще не хватает от JMS/Serializer
то что он не суппортится
ого... там начали чето фиксить
прикольно
но все же мое мнение не поменялось
вместо того что бы возиться с сериалайзерами
делаем SQL/DQL запрос и жахаем ArrayHydrator
и не надо париться