2015-06-04 159 views
3

我包括在一個循環中的多個模板返回變量,包括這個模板,我定義Laravel - 修改並通過</p> <pre><code>@include('template.included') </code></pre> <p>從@include

$page = 0; 

,並在模板中之前,多次它調用

$page++; 

在包含的模板中,該值正確遞增,但ou看起來像$ page變量保持不變 - 看起來像@include創建它自己的每個var使用的副本。

我需要這個$頁面變量來從這些模板內部進行更新,並將其值返回到我的主模板 - 我是否缺少一些簡單的東西?

欣賞任何建議!

編輯:

我的問題,例如:

$page = 0; 
@include('template.included') //This calls $page++ 5 times 
echo $page; //returns 0 

我需要$頁面返回4,而不是0

+0

我沒有訪問模板內的變量的問題,但是我想要在包含的文件內進行更改以更新模板外部的變量。我將添加另一個示例的編輯,希望更清晰 –

回答

0

你的假設是正確的,Laravel的觀點,系統並創建一個新的範圍爲每個視圖加載。該方法Illuminate\View\Factory::make()包括視圖的情況下使用,這是否:

new View($this, $this->getEngineFromPath($path), $view, $path, $data) 

它創建一個新的視圖和數據傳遞到它,這有效地意味着它發送的信息的副本。由於參數不存在passed by reference(已棄用,且較新的PHP版本已被刪除),因此您無法完成。

這就是說,你的方法似乎有缺陷。它看起來像你在視圖中構建分頁,這是你不應該在那裏做的事情。 Laravel已經提供了一種非常簡單的方法來創建Pagination,您應該也許應該考慮一下。