2013-10-29 26 views
1

製造測試控制器的一個未定義:Laravel 4 - 不會拋出該變量在意見

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> 

現在,當我取消變量$ a在AAA或BBB的觀點,有顯示標準laravel錯誤。

但是,當我在ccc視圖取消註釋 - 錯誤不顯示。它被渲染這個,而不是:

aaa 
throws that $a is undefined 

我在我的其他電腦測試相同的技術,我得到的錯誤顯示在所有意見,因爲我期望。那麼爲什麼我不能在這臺計算機上?我應該在哪裏看?

被修改

如果我添加到構造器

的ini_set( '的display_errors',1);

然後顯示一個錯誤:

致命錯誤:方法照亮\查看\查看:: __的toString()不得拋出在/ home /大流士/回購/儀表板/應用/存儲/查看/ 3b6a644a21beb63c65a709b559771162異常第11行

,並在該視圖中第11行是在AAA視圖:

<?php echo $subview; ?> 

順便說一下我在測試上的另一個 - 現在的linux服務器,其相同。

+1

也許不同的錯誤報告水平在php.ini – WebweaverD

+0

OK,如果我在構造函數中設置了error_reporting(-1);那麼它應該會得到所有的錯誤,不管我猜到什麼。但另一方面 - 通常錯誤使用laravel的樣式,並且這個設置處理php。所以感覺不知怎麼的,在laravel安裝的某個地方有些不同。 –

回答

2

發現,如果我打電話

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