Laravel 错误: 方法照亮\视图\视图::__toString() 不得引发异常

你在Laravel工作时看到这个可爱的错误了吗?

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

我看过它,它非常烦人。我已经发现了抛出此错误的两个原因。我只是想帮助人们不要花费数小时的时间。

查看下面的答案和情况。:)


答案 1

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

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

执行:或echo View::make('..')->render();echo view('..')->render();

对于 PHP 版本 <7.4通过投射视图,它自动使用方法,这不会引发异常。如果手动调用,则会正常处理异常。如果视图中存在错误,则会出现这种情况 - laravel 会引发异常。__toString()render()

在 PHP >=7.4 中修复了此问题,您不应该遇到此问题:https://wiki.php.net/rfc/tostring_exceptions

对于 PHP 版本 <7.4:这实际上是一个PHP限制,而不是Laravels。在此处阅读有关此“功能”的更多信息:https://bugs.php.net/bug.php?id=53648


答案 2

情况 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
                    )

            )

    )

当您尝试直接在视图中访问post_images数组时,它会引发错误。不。事。什么。你。做。

回答 2:检查您正在呼叫视图的所有位置。这里发生的事情是,我试图在我没有给出post_images数组的区域的其他地方访问相同的视图。花了很长时间才弄清楚。

我希望这对其他人有所帮助。:)我只知道我不断得到的错误对我没有帮助。


推荐