テストコントローラーを作成しました:
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
bbb.blade.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>
ccc.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);
次に、1 つのエラーが表示されます。
致命的なエラー: メソッド Illuminate\View\View::__toString() は、11 行目の /home/darius/repos/dashboard/app/storage/views/3b6a644a21beb63c65a709b559771162 で例外をスローしてはなりません
そのビューでは、行 11 は aaa ビューにありました。
<?php echo $subview; ?>
ところで、私は別のLinuxサーバーでテストしていましたが、同じです。