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);

然后显示一个错误:

致命错误:方法 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 回答