Laravel错误:方法照亮\查看\查看:: __的toString()不得抛出一个异常

问题描述 投票:34回答:4

你有没有在Laravel工作时,看到这个可爱的错误?

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

我已经看到它,它是令人难以置信的烦人。我已经发现了两个原因这个错误被抛出。我只是想帮助人们不采取时间和小时的时间。

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

php laravel runtime-error tostring render-to-string
4个回答
65
投票

有一个很简单的解决办法:不要投查看对象的字符串。

不要: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


4
投票

情况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] => [email protected]
        [post_images] => Array
            (
                [0] => stdClass Object
                    (
                        [image_path] => 9452photo_2.JPG
                    )

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

            )

    )

当您尝试直接在视图中访问post_images阵列,它抛出一个错误。不管。什么。您。做。

答2:检查在所有的地方,您呼叫的视图。这里发生的是,我是想在其他地方获得同样的观点在我没有给post_images阵列的区域。没完没了弄清楚。

我希望这可以帮助别人。 :)我只知道我一直得到没有帮助我在任何地方的错误。


0
投票

我遇到错误这样,当在我的情况$expression = new Expression();对象是一样的参数变量submitExpression($intent, $bot_id, **$expression**){检查下面的代码的更多细节。

private function submitExpression($b_id, $expression){
   $expression = new Expression();
   $expression->b_id = $b_id;
   $expression->expression = $expression;
   $expression->save();

}

所以我改变了上面的代码类似

private function submitExpression($b_id, $statement){      
   $expression = new Expression();
   $expression->b_id = $b_id;
   $expression->expression = $statement;
   $expression->save(); 
}

和一切工作正常,希望对您有所帮助。


-1
投票

类似的错误是:

FatalErrorException在FooController.php线0:方法应用程序\型号\富:: __的toString()不得抛出一个异常

而这只是一个糟糕的分配:$foo.= new Foo;

而不是:$foo = new Foo;

© www.soinside.com 2019 - 2024. All rights reserved.