Управление страницей 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 страницу.