Когда я хочу получить элемент с 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, не найденное?