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

cbl*_*793 38 php runtime-error tostring render-to-string laravel

你在Laravel工作时见过这个可爱的错误吗?

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

我已经看过了,这令人非常恼火.我发现了抛出此错误的两个原因.我只想帮助人们不要花费数小时的时间.

查看以下答案和情况.:)

Mār*_*dis 67

有一个非常简单的解决方案:不要将View对象强制转换为字符串.

不要:echo View::make('..');echo view('..');

做:echo View::make('..')->render();echo view('..')->render();

通过转换视图,它__toString()自动使用方法,不会抛出异常.如果render()手动调用,则会正常处理异常.如果视图中存在错误,则会出现这种情况 - laravel会抛出异常.

这实际上是PHP限制,而不是Laravels.在此处阅读有关此"功能"的更多信息:https://bugs.php.net/bug.php?id = 53648

  • 啊。好提示!:) laravel 文档从未涉及到这一点。 (2认同)
  • 虽然它可能是一个PHP限制,但它是一个laravel设计.他们应该更明确地提到 - > render()部分.这已经困扰了我多年.终于今天在这里找到了解决方案,谢谢! (2认同)

cbl*_*793 5

情况1:尝试在数组中打印出一个值。

答案1:尝试打印出阵列。您确定这是一个数组吗?当它是对象而不是数组时,出现了此错误。尝试做一个print_r,看看会得到什么。

情况2:您具有以下关联数组:

Array
    (
        [post_id] => 65
        [post_text] => Multiple Images!
        [created_at] => 2014-10-23 09:16:46
        [updated_on] => 
        [post_category] => stdClass Object
            (
                [category_label] => Help Wanted
                [category_code] => help_wanted
            )

        [employee_full_name] => Sam Jones
        [employee_pic] => /images/employee-image-placeholder.png
        [employee_email] => jon@gmail.com
        [post_images] => Array
            (
                [0] => stdClass Object
                    (
                        [image_path] => 9452photo_2.JPG
                    )

                [1] => stdClass Object
                    (
                        [image_path] => 8031photo_3.JPG
                    )

            )

    )
Run Code Online (Sandbox Code Playgroud)

当您尝试直接在View中访问post_images数组时,它将引发错误。不管。什么。您。做。

答案2:检查所有要调用视图的地方。这里发生的是,我试图在未提供post_images数组的区域中的其他位置访问相同的视图。永远花了一点时间。

我希望这可以帮助其他人。:)我只知道我不断遇到的错误并没有帮助我。