container = $container; } /** * Middleware execution: * - execute the controller * - return the response * * In case of error, the error template will be displayed with the exception message. * * @param Request $request Slim request * @param Response $response Slim response * @param callable $next Next action * * @return Response response. */ public function __invoke(Request $request, Response $response, callable $next) { try { $response = $next($request, $response); } catch (ShaarliException $e) { $this->container->pageBuilder->assign('message', $e->getMessage()); if ($this->container->conf->get('dev.debug', false)) { $this->container->pageBuilder->assign( 'stacktrace', nl2br(get_class($this) .': '. $e->getTraceAsString()) ); } $response = $response->withStatus($e->getCode()); $response = $response->write($this->container->pageBuilder->render('error')); } return $response; } }