diff --git a/app/ErrorAction.php b/app/ErrorAction.php index 8fc15dc..9afca12 100644 --- a/app/ErrorAction.php +++ b/app/ErrorAction.php @@ -27,6 +27,12 @@ class ErrorAction extends Action { $this->template = 500; if ($this->exception instanceof Error404Exception) { + if ($this->isAjaxActionError()) { + if (!headers_sent()) { + header('HTTP/1.0 404 Not Found'); + die(); + } + } $this->template = 404; } $this->logError(); @@ -76,9 +82,24 @@ class ErrorAction extends Action $error = 'Unknown Error'; break; } - $message = 'PHP ' . $error . ': ' . $ex->getMessage() . ' in ' . $ex->getFile() - . ' on line ' . $ex->getLine(); + $message = 'PHP ' . $error . ': ' . $ex->getMessage() . ' in ' . $ex->getFile() + . ' on line ' . $ex->getLine(); error_log($message); } } + + /** + * Check, if exception was thrown from AjaxAction Class + * @return bool + */ + protected function isAjaxActionError() + { + $trace = $this->exception->getTrace(); + foreach ($trace as $line) { + if (isset($line['class']) && $line['class'] === 'AjaxAction') { + return true; + } + } + return false; + } } \ No newline at end of file