Laravel错误:方法Illuminate\View\View :: __ toString()不得抛出异常

use*_*060 4 php laravel

我正在使用larval 4.2,我在wrapper.php我的视图文件中收到以下错误:

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

错误:

   Error : Method Illuminate\View\View::__toString() must not throw an exception
Run Code Online (Sandbox Code Playgroud)

你知道什么导致了这个吗?

Ala*_*orm 5

Laravel通过将Illuminate\View\View对象转换为字符串来呈现其视图.如果一个对象被转换为一个字符串并且有一个__toString方法集,PHP将调用该__toString方法并使用该值作为转换值.

例如,这个程序

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

将输出

I am a foo object.
Run Code Online (Sandbox Code Playgroud)

这种行为有一个很大的警告 - 由于PHP的implmentation细节,你不能抛出异常__toString.

所以,看起来您遇到的问题是您视图中的某些内容引发异常.根据您提供的信息,错误可能是任何事情.我进一步调试的方法是尝试在视图中运行PHP代码

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

的图(路线,控制器动作等),确保之外$sidebar,$content等具有相同的值.这应该仍然会抛出异常,但因为它在__toStringPHP 之外会为您提供有关它抛出异常的原因的更多信息.通过真实的错误消息,您将能够解决实际问题.

  • 我注意到添加了 - > render(); 显示更多的错误,我发现什么是错的 (3认同)