Ошибка Laravel: метод IlluminateViewView:: toString() не должен вызывать исключение
вы видели эту прекрасную ошибку во время работы в Laravel?
Method IlluminateViewView::__toString() must not throw an exception
Я видел это, и это невероятно раздражает. Я выяснил две причины, почему эта ошибка выбрасывается. Я просто хочу помочь людям не тратить часы и часы времени.
просмотр ответов и ситуаций ниже. :)
3 ответов
существует очень простое решение: не бросайте объект View в строку.
нет: echo View::make('..'); или echo view('..');
Do:echo View::make('..')->render(); или echo view('..')->render();
по кастингу view, он использует __toString() метод автоматически, который не может вызвать исключение. Если вы позвоните render() вручную исключения обрабатываются нормально. Это происходит, если в представлении есть ошибка-laravel выдает исключение.
это на самом деле ограничение PHP, а не Laravels. Подробнее о эта "особенность" здесь:https://bugs.php.net/bug.php?id=53648
Ситуация 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. Потребовалась вечность, чтобы понять.
Я надеюсь, что это поможет кому-то еще. :) Я просто знаю, что ошибка, которую я продолжал получать, не помогла мне нигде.
подобная ошибка:
исключение FatalErrorException в FooController.php line 0: метод App\Models\Foo::__toString () не должен вызывать исключение
и это было просто плохое задание:$foo.= new Foo;
вместо: $foo = new Foo;
