Исключение обработки ошибок платформы Api? - PullRequest
0 голосов
/ 24 января 2019

Когда я хочу получить элемент с URL http://127.0.0.1:8000/actualites/1, возникает исключение "hydra: description": "Not Found" . я пытался настроить это исключение с Обработка ошибок - Платформа API: Документация , ничего не изменилось !!

Приложение / SRC / Exception / ActualiteNotFoundException.php

<?php

namespace App\Exception;

final class ActualiteNotFoundException extends \Exception
{
}

EventSubscriber

<?php
// app/src/EventSubscriber/ActualiteManager.php

namespace App\EventSubscriber;

use ApiPlatform\Core\EventListener\EventPriorities;
use App\Entity\Actualite;
use App\Exception\ActualiteNotFoundException;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
use Symfony\Component\HttpKernel\KernelEvents;

final class ActualiteManager implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
        return [
            KernelEvents::VIEW => ['checkProductAvailability', EventPriorities::PRE_VALIDATE],
        ];
    }

    public function checkProductAvailability(GetResponseForControllerResultEvent $event): void
    {
        $actualite= $event->getControllerResult();
        if (!$actualite instanceof Actualite|| !$event->getRequest()->isMethodSafe(false)) {
            return;
        }

        if (!$product->isPubliclyAvailable()) {
            // Using internal codes for a better understanding of what's going on
            throw new ActualiteNotFoundException(sprintf('The Actualite  does not exist !));
        }
    }
}

конфигурация

# config/packages/api_platform.yaml
api_platform:
    # ...
    exception_to_status:
        # The 4 following handlers are registered by default, keep those lines to prevent unexpected side effects
        Symfony\Component\Serializer\Exception\ExceptionInterface: 400 # Use a raw status code (recommended)
        ApiPlatform\Core\Exception\InvalidArgumentException: 'HTTP_BAD_REQUEST' # Or a `Symfony\Component\HttpFoundation\Response`'s constant
        ApiPlatform\Core\Exception\FilterValidationException: 400
        Doctrine\ORM\OptimisticLockException: 409

        # Custom mapping
        App\Exception\ActualiteNotFoundException: 404 # Here is the handler for our custom exception

Как настроить исключение 404, не найденное?

1 Ответ

0 голосов
/ 12 апреля 2019

Прежде всего

Вы пропали без вести 'в этой строке: бросить новое ActualiteNotFoundException (sprintf ('Actualite не существует!));

Во-вторых, Вы не изменили $ product на $ actualite в этой строке: if (! $ product-> isPubliclyAvailable ()) {

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...