diff --git a/src/Exceptions/Concerns/RendersHttpExceptions.php b/src/Exceptions/Concerns/RendersHttpExceptions.php index e6489261db..ab316357e8 100644 --- a/src/Exceptions/Concerns/RendersHttpExceptions.php +++ b/src/Exceptions/Concerns/RendersHttpExceptions.php @@ -2,6 +2,7 @@ namespace Statamic\Exceptions\Concerns; +use Closure; use Illuminate\Http\Request; use Illuminate\Http\Response; use Statamic\Facades\Cascade; @@ -12,8 +13,14 @@ trait RendersHttpExceptions { - public function render() + private static ?Closure $renderCallback = null; + + public function render(Request $request) { + if (static::$renderCallback && ($response = Closure::fromCallable(static::$renderCallback)->call($this, $request))) { + return $response; + } + if (Statamic::isCpRoute()) { return response()->view('statamic::errors.'.$this->getStatusCode(), [], $this->getStatusCode()); } @@ -82,4 +89,9 @@ private function getCachedError(): ?Response ? $cacher->getCachedPage($request)->toResponse($request) : null; } + + public static function renderUsing(Closure $callback): void + { + static::$renderCallback = $callback; + } }