Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Управление страницей 404 (NOT FOUND)

В случае если запрашивают url, pattern которого не зарегистрирован, то вызывается endpoint указанный для страницы 404.

Вы можете переопределить стандартный обработчик, а также добавить свои middlewares.

Настройка этих параметров осуществляется в App\Project при создании \Cekta\Framework\HTTP\Module() можно передать опциональные параметры:

handler_404 имя класса обработчика который использовать для обработки 404 страницы, должен реализовать интерфейс \Psr\Http\Server\RequestHandlerInterface.
DEFAULT: \Cekta\Framework\HTTP\Handler\NotFound::class

middlewares_404 - массив строк имен классов middlewares которые будут вызываться при обработке страницы 404, каждый класс должен реализовывать \Psr\Http\Server\MiddlewareInterface.
DEFAULT: []

Изменение страницы 404.

src/Project.php

new \Cekta\Framework\HTTP\Module(
    handler_404: App\MyHandler404::class,
),

src/MyHandler404.php - расположить можно где угодно, следуйте psr-4.

<?php

declare(strict_types=1);

namespace App;

use Cekta\Framework\HTTP\Response\JSONFactory;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;

final readonly class MyHandler404 implements RequestHandlerInterface
{
    public function __construct(
        private JSONFactory $factory
    ) {
    }

    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        return $this->factory->create(
            ['message' => 'new 404 handler'],
            404
        );
    }
}

Перезапустим (build и перезапуск app):

make restart

Откроем 404 страницу, http://localhost:8080/some-not-exist-url.

Увидим обновленную 404 страницу.