Мне нужен собственный обработчик JMSSerializer, который по-разному обрабатывает формы и поэтому создал класс AppBundle\FormJmsSerializerHandler
:
class FormJmsSerializerHandler implements SubscribingHandlerInterface
{
public static function getSubscribingMethods()
{
return [
[
'direction' => GraphNavigator::DIRECTION_SERIALIZATION,
'format' => 'json',
'type' => 'Symfony\Component\Form\Form',
'method' => 'process',
]
];
}
public function process(JsonSerializationVisitor $visitor, Form $form, array $type)
{
return ['test' => 'success'];
}
}
Я регистрирую его в services.yml:
custom_jms_handler:
class: AppBundle\FormJmsSerializerHandler
tags:
- { name: jms_serializer.subscribing_handler }
Теперь обработчик формы jms_serializer.form_error_handler
сериализатора JMS по умолчанию имеет более высокий приоритет, и поэтому мой пользовательский обработчик игнорируется.
(EDIT) Это была просто опечатка (на этот раз рефакторинг PhpStorm не удался):
Теперь я понимаю
ReflectionException в строке 39 CustomHandlersPass.php:Класс AppBundle\FormJmsSerializerHandler не существует
Что я делаю не так?
SerializerBuilder
и т. д. звонков. Я просто возвращаю объект формы в свой контроллер, а FOSRestBundle преобразует его в JSON через сериализатор JMS. - person fishbone   schedule 24.06.2016