Использование одного и того же класса для нескольких ресурсов в Zend Expressive Hal - PullRequest
0 голосов
/ 08 мая 2019

Я использую Zend Expressive Hal для генерации ответа Hal. Проблема в том, что когда я использую один и тот же resource_class для 2 маршрутов в метаданных Hal, он генерирует исключение и не работает. Мне было интересно, если есть способ, где я могу использовать один и тот же объект для более чем одного маршрута. Вот мой код метаданных Hal:

return [
     MetadataMap::class => [
        [
            '__class__' => RouteBasedResourceMetadata::class,
            'resource_class' => ImmutablePropertyObject::class,
            'route' => 'api.ping',
            'extractor' => ArraySerializableHydrator::class,
        ],
         [
             '__class__' => RouteBasedResourceMetadata::class,
             'resource_class' => \Abstracts\PropertyObject::class,
             'route' => 'api.getEventById',
             'extractor' => \Event\EventHydrator::class,
         ],
         [
             '__class__' => RouteBasedResourceMetadata::class,
             'resource_class' => \Abstracts\PropertyObject::class,
             'route' => 'api.postEvent',
             'extractor' => \Event\EventHydrator::class,
         ]
    ]
];

Вот мои маршруты:

return function (Application $app, MiddlewareFactory $factory, ContainerInterface $container) : void {
    $app->get('/', App\Handler\HomePageHandler::class, 'home');
    $app->get('/api/ping', App\Handler\PingHandler::class, 'api.ping');
    $app->get('/api/event/:id', Event\Handler\EventReadHandler::class, 'api.getEventById');
    $app->post('/api/event', Event\Handler\EventPostHandler::class, 'api.postEvent');
    $app->put('/api/event', Event\Handler\EventUpdateHandler::class, 'api.updateEvent');

};
...