Вернуть 404 из компонента OctoberCMS

Ответ формируется на хуке жизненного цикла onRun.

class SomeComponent extends ComponentBase
{
    public function onRun()
    {
        return $this->controller->run('404');
    }
}

Off topic

В одном из обсуждений Samuel, один из авторов CMS, предложил немного другой вариант:

return \Response::make($this->controller->run('404'), 404);

Не знаю в чем специфика, в обоих случаях возвращается 404 страница со статус кодом 404. Единственное отличие, которое я нашёл это в свойство экземпляра ответа content вначале дописывается строка вида HTTP/1.0 404 Not Found Cache-Control: no-cache, private Date: Fri, 22 Dec 2017 05:17:19 GMT. Для простого ответа достаточно:

return \Response::make('Page not found', 404);`

Под капотом ответа

Метод run(string $url='/') ищет и возвращает запрошенную страницу. Если страница не найдена, она возвращает страницу соответствующую URL /404. Если такой страницы нет (смотреть в разделе сайта /backend/cms), то возвращает системную страницу 404. Возвращаемая страница является экземпляром класса Illuminate\Http\Response, который наследуется от класса Symfony\Component\HttpFoundation\Response. Возврат объекта Response позволяет изменить HTTP-код и заголовки ответа.

$response = Response::make($contents, $statusCode);

$response->header('Content-Type', $value);

return $response;

Похожие записи