Зарегистрировать пользовательский обработчик jmsserializer

Мне нужен собственный обработчик 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 не существует

Что я делаю не так?


person fishbone    schedule 24.06.2016    source источник
comment
Вы зарегистрировали его, как описано в документе по сериализации JMS: jmsyst.com/libs/serializer /master/handlers#подписка-обработчики   -  person LBA    schedule 24.06.2016
comment
Нет. Я использую его вместе с FOSRestBundle. Так что я не знаю, где это сделать. Я хочу, чтобы этот обработчик заменил обработчик формы по умолчанию для всего приложения.   -  person fishbone    schedule 24.06.2016
comment
хм, но вы, кажется, используете пакет JMS для сериализации, верно? поэтому проверьте также это: stackoverflow.com/ вопросы/27475801/   -  person LBA    schedule 24.06.2016
comment
да, я использую его для сериализации. Но FOSRestBundle вызывает сериализатор JMS. Так что у меня нет этих SerializerBuilder и т. д. звонков. Я просто возвращаю объект формы в свой контроллер, а FOSRestBundle преобразует его в JSON через сериализатор JMS.   -  person fishbone    schedule 24.06.2016
comment
я понимаю, но я уверен, что решение вашей проблемы очень связано. удачи!   -  person LBA    schedule 24.06.2016