Платформа API – переопределить исключениеPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Платформа API – переопределить исключение

Сообщение Anonymous »

Я изучаю обработку ошибок с помощью новейшей версии платформы API: https://api-platform.com/docs/core/errors/ и «Управляйте сегментом исключений».
Я пытаюсь переопределить исключение с помощью специального сообщения, которое отправлю в FE.

Код: Выделить всё

#[AsTaggedItem('api_platform.state.error_provider')]
final class ErrorProvider implements ProviderInterface
{
public function provide(Operation $operation, array $uriVariables = [], array $context = []): object|array|null
{
die('enter');
$request = $context['request'];
$format = $request->getRequestFormat();
$exception = $request->attributes->get('exception');

/** @var HttpOperation $operation */
$status = $operation->getStatus() ?? 500;
// You don't have to use this, you can use a Response, an array or any object (preferably a resource that API Platform can handle).

if ($status >= 500) {
$error->setDetail('Something went wrong');
}

return $error;
}
}
Так как я использую версию Symfony 6.2, я зарегистрировал провайдера и псевдоним (не как атрибут) в файле YAML:

Код: Выделить всё

api_platform.state.error_provider:
class: 'App\ApiPlatform\Error\Provider\ErrorProvider'
tags:
- key: 'api_platform.state.error_provider'
name: 'api_platform.state_provider'

api_platform.state_provider:
alias: api_platform.state.error_provider
И:

Код: Выделить всё

#[ErrorResource]
class Error extends \Exception implements ProblemExceptionInterface
{
public function getType(): string
{
return 'teapot';
}

public function getTitle(): ?string
{
return null;
}

public function getStatus(): ?int
{
return 418;
}

public function getDetail(): ?string
{
return 'I am teapot';
}

public function getInstance(): ?string
{
return null;
}
}
Я использовал одну из конечных точек, чтобы проверить ее с помощью throw new \Exception();, но кажется, что поставщик не отвечает (мой die('enter'); не отображается)

Подробнее здесь: https://stackoverflow.com/questions/783 ... -exception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»