Commit b0434829 authored by Taylor Otwell's avatar Taylor Otwell

Improve view errors.

parent 633c2bde
......@@ -15,6 +15,18 @@ class Error {
ob_get_level() and ob_end_clean();
$message = $exception->getMessage();
// For Laravel view errors we want to show a prettier error:
$file = $exception->getFile();
if (str_contains($exception->getFile(), 'eval()') and str_contains($exception->getFile(), 'laravel/view.php'))
{
$message = 'Error rendering view: ['.View::$last['name'].']'.PHP_EOL.PHP_EOL.$message;
$file = View::$last['path'];
}
// If detailed errors are enabled, we'll just format the exception into
// a simple error message and display it on the screen. We don't use a
// View in case the problem is in the View class.
......@@ -22,9 +34,9 @@ class Error {
{
echo "<html><h2>Unhandled Exception</h2>
<h3>Message:</h3>
<pre>".$exception->getMessage()."</pre>
<pre>".$message."</pre>
<h3>Location:</h3>
<pre>".$exception->getFile()." on line ".$exception->getLine()."</pre>";
<pre>".$file." on line ".$exception->getLine()."</pre>";
if ($trace)
{
......
......@@ -44,6 +44,13 @@ class View implements ArrayAccess {
*/
public static $cache = array();
/**
* THe last view to be rendered.
*
* @var string
*/
public static $last;
/**
* The Laravel view loader event name.
*
......@@ -387,6 +394,8 @@ class View implements ArrayAccess {
*/
protected function load()
{
static::$last = array('name' => $this->view, 'path' => $this->path);
if (isset(static::$cache[$this->path]))
{
return static::$cache[$this->path];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment