Made 测试控制器:
class Home1Controller extends BaseController {
public function __construct() {
ini_set('show_errors', true);
}
public function getTest() {
$data['subview'] = $this->aaa();
return View::make('test.bbb', $data);
}
private function aaa() {
for ($i=0; $i<10; $i++) {
$data['subviews'][] = $this->ccc();
}
return View::make('test.aaa', $data);
}
private function ccc() {
return View::make('test.ccc');
}
}
和观点:
aaa.blade.php:
<div>
aaa
<p>throws that $a is undefined </p>
{{-- $a --}}
@foreach ($subviews as $subview)
{{ $subview }}
@endforeach
呸呸.php呸呸��
<style type="text/css">
div {
border: 1px solid;
padding: 1px;
margin: 1px;
}
</style>
<div>
<p>bbb</p>
<p>throws that $a is undefined</p>
{{ $subview }}
{{-- $a --}}
</div>
cc.blade.php:
<div>
ccc
does not throw that $a is undefined
{{-- $a --}}
</div>
现在,当我在 aaa 或 bbb 视图中取消注释变量$a时,会显示标准的 laravel 错误。
但是当我在 ccc 视图中取消评论时 - 不显示错误。它呈现为:
aaa
throws that $a is undefined
我正在另一台计算机上测试相同的技术,并且按预期在所有视图中显示时出错。那为什么我不能上这台电脑呢?我应该在哪里看?
编辑
如果我添加到构造函数
ini_set("display_errors", 1);
然后显示一个错误:
致命错误:方法 Illuminate''View''View::__toString() 不得在第 11 行的/home/darius/repos/dashboard/app/storage/views/3b6a644a21beb63c65a709b559771162 中引发异常
在该视图中,第 11 行在 AAA 视图中:
<?php echo $subview; ?>
顺便说一句,我现在正在另一个 - linux 服务器上进行测试,它是一样的。
发现如果我打电话
return View::make('test.ccc')->render();
然后它抛出该变量是未定义的。
通过这篇文章,我发现。
http://forums.laravel.io/viewtopic.php?id=10378
现在我只是不明白为什么它隐藏在文档中如此之深?
例如这里:
http://laravel.com/docs/responses
它的每一个地方都显示视图::制作就足够了。
这里也没有谈论:
http://laravel.com/docs/templates
只有在那里写方法:
http://laravel.com/api/class-Illuminate.View.View.html