. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Http; use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Webtrees\Registry; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use function response; use function view; /** * Allows a page fragment to be embedded in a page layout and converted to an HTTP response. * Used by controllers, request-handlers, modules, etc. */ trait ViewResponseTrait { protected string $layout = 'layouts/default'; /** * @param string $view_name * @param array $view_data * @param int $status * * @return ResponseInterface */ protected function viewResponse(string $view_name, array $view_data, int $status = StatusCodeInterface::STATUS_OK): ResponseInterface { // Make the view's data available to the layout. $layout_data = $view_data; // Render the view $layout_data['content'] = view($view_name, $view_data); $layout_data['request'] = Registry::container()->get(ServerRequestInterface::class); // Insert the view into the layout $html = view($this->layout, $layout_data); return response($html, $status); } }