1

テストコントローラーを作成しました:

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サーバーでテストしていましたが、同じです。

4

1 に答える 1

2

私が電話すればそれを見つけた

return View::make('test.ccc')->render();

次に、その変数が未定義であることをスローします。

この投稿で私は見つけました。

http://forums.laravel.io/viewtopic.php?id=10378

ドキュメントに深く隠されている理由がわかりませんか?

たとえば、次のとおりです。

http://laravel.com/docs/responses

view::make で十分であることを示すのはどこにでもあります。

ここでもそれは話されていません:

http://laravel.com/docs/templates

そこにのみメソッドが書かれています:

http://laravel.com/api/class-Illuminate.View.View.html

于 2013-10-31T07:13:03.067 に答える