. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Http; use Fig\Http\Message\StatusCodeInterface; 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 { /** @var string */ protected $layout = 'layouts/default'; /** * @param string $view_name * @param mixed[] $view_data * @param int $status * * @return ResponseInterface */ protected function viewResponse(string $view_name, array $view_data, $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'] = app(ServerRequestInterface::class); // Most pages use the default layout. Other built-in layouts include admin and ajax. $layout = $this->layout; // Insert the view into the layout $html = view($layout, $layout_data); return response($html, $status); } }