2015-06-04 125 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,您应该也许应该考虑一下。