Laravel错误:方法IlluminateViewView::__toString()不能引发异常


Laravel Error : Method IlluminateViewView::__toString() must not throw an exception

我正在使用幼虫4.2,我的包装器中出现以下错误.php我的视图文件:

   <?php echo View::make('layouts/blocks/header')->with('sidebar', $sidebar)->with('active', $active); ?>
   <?php echo $content; ?>
   <?php echo View::make('layouts/blocks/footer'); ?>

错误:

   Error : Method Illuminate'View'View::__toString() must not throw an exception

你知道是什么原因造成的吗?

Laravel通过将Illuminate'View'View对象转换为字符串来呈现其视图。 如果一个对象被强制转换为字符串并且设置了__toString方法,PHP 将调用 __toString 方法并将该值用作强制转换值。

例如,该程序

class Foo
{
    public function __toString()
    {
        return 'I am a foo object';
    }
}
$o = new Foo;
echo (string) $o;

将输出

I am a foo object.

这种行为有一个很大的警告 - 由于PHP实现细节,你不能在__toString中抛出异常。

因此,看起来您遇到的问题是您认为确实会引发异常。根据您提供的信息,错误可能是任何错误。我进一步调试的方法是尝试在您的视图中运行 PHP 代码

echo View::make('layouts/blocks/header')->with('sidebar', $sidebar)->with('active', $active);
echo $content;
echo View::make('layouts/blocks/footer');

在视图(路由、控制器操作等)之外,确保$sidebar$content等具有相同的值。 这仍然应该抛出异常,但由于它超出了__toString PHP 会为您提供有关它为什么抛出异常的更多信息。 使用真正的错误消息,您将能够解决实际问题。