【问题标题】:Method Illuminate\View\View::__toString() must not throw an exception when loading views inside view in Laravel在 Laravel 的视图中加载视图时,方法 Illuminate\View\View::__toString() 不得抛出异常
【发布时间】:2014-05-15 11:05:47
【问题描述】:

我在每个页面中加载页眉和页脚,而不使用刀片,只使用 echo View:make('templates/header'); 并在页面末尾同样使用页脚。

我在其他视图中以完全相同的方式加载这些相同的页眉和页脚视图,没有问题,但是当我从我的控制器调用这个特定视图时,我收到这个非常非信息性的 Laravel 错误消息。它现在是非常基本的 HTML,因为我仍处于构建/测试阶段。我不知道为什么在我正在使用的其他视图中加载页眉和页脚视图有效,但在这里它们崩溃了。

代码如下:

<?php 
echo View::make('templates/header');
?>
<div class="row">
    <div class="col-md-5 col-md-offset-3">
    <h1>Record Saved!</h1>
    </div>
</div>
<?
echo View::make('templates/footer');

有什么方法可以从 Laravel 中获取更多信息以找出它不喜欢什么?

【问题讨论】:

  • 什么样的非信息性 laravel 错误信息?
  • 好吧,它究竟试图转换为字符串是一个好的开始。只是说它的 _to_string() 函数不能抛出异常并没有给我太多的工作。

标签: php laravel-4


【解决方案1】:

__toString() 调用 View (source) 上的 render() 方法。因此,异常会在 templates.footertemplates.header 中引发。

【讨论】:

  • 我想我在我的 OP 中并没有让那部分显而易见,但不是在开玩笑吗?哈哈
  • 是的,您没有从这些视图中发布任何代码。所以你已经缩小了范围,在哪里寻找你的错误。
  • 我真正想知道的是,是否有办法让 Laravel 更详细地说明它不喜欢什么。简单地说他们的一个函数不能抛出错误而不给出一些关于它到底出错的指示并不是很有用。无论如何,感谢您的意见。
  • 啊,我明白了。您在 app/storage/logs/laravel.log 中记录了一些错误。
【解决方案2】:

刀片模板文件中,不需要写&lt;?php ?&gt;Tag。

也在刀片文件中使用include 而不是View::make

@include('templates.header');
<div class="row">
    <div class="col-md-5 col-md-offset-3">
    <h1>Record Saved!</h1>
    </div>
</div>
@include('templates.footer');

注意Blade文件必须有扩展名.blade.php

希望对你有帮助:-)

【讨论】:

    猜你喜欢
    • 2015-04-04
    • 2016-09-23
    • 2014-12-19
    • 2016-07-13
    • 2014-11-18
    • 2014-04-20
    • 2015-04-14
    • 2021-08-03
    • 1970-01-01
    相关资源
    最近更新 更多