Jos*_*ned 6 php laravel laravel-4
我通过使用在循环中包含多个模板
@include('template.included')
Run Code Online (Sandbox Code Playgroud)
在包含这个模板之前,我定义了
$page = 0;
Run Code Online (Sandbox Code Playgroud)
在模板内部,它多次调用
$page++;
Run Code Online (Sandbox Code Playgroud)
在包含的模板内,该值正确递增,但在模板外, $page 变量似乎保持不变 - 看起来 @include 创建了您使用的每个 var 的副本。
我需要这个 $page 变量从这些模板内部更新,并将它的值返回到我的主模板 - 我错过了一些简单的东西吗?
感谢任何建议!
编辑:
我的问题,例如:
$page = 0;
@include('template.included') //This calls $page++ 5 times
echo $page; //returns 0
Run Code Online (Sandbox Code Playgroud)
我需要 $page 返回 4,而不是 0
您的假设是正确的,Laravel 的视图系统确实为它加载的每个视图创建了一个新范围。Illuminate\View\Factory::make()包含视图时使用的方法执行以下操作:
new View($this, $this->getEngineFromPath($path), $view, $path, $data)
Run Code Online (Sandbox Code Playgroud)
它正在创建一个新视图并将数据传递给它,这实际上意味着它正在发送信息的副本。由于参数不是通过引用传递的(这已被弃用,并且在较新的 PHP 版本中已被删除),因此无法完成您想要的操作。
话虽这么说,你的方法似乎有缺陷。在我看来,您正在视图中构建分页,这是您不应该在那里做的事情。Laravel 已经提供了一种非常简单的方法来创建Pagination,您也许应该研究一下。
| 归档时间: |
|
| 查看次数: |
1071 次 |
| 最近记录: |