php - Laravel - 从@include 修改并返回变量

标签 php laravel laravel-4

我通过使用在循环中包含多个模板

@include('template.included')

在包含这个模板之前我定义

$page = 0;

在模板内部,多次调用

$page++;

在包含的模板内,该值正确递增,但在模板外,$page 变量似乎保持不变 - 看起来 @include 为您使用的每个变量创建了自己的副本。

我需要这个 $page 变量从这些模板中更新,并将它的值返回到我的主模板 - 我是否遗漏了一些简单的东西?

感谢任何建议!

编辑:

我的问题,例如:

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

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

最佳答案

你的假设是正确的,Laravel 的 View 系统确实为它加载的每个 View 创建了一个新的范围。 Illuminate\View\Factory::make()包含 View 时使用的方法是这样做的:

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

它正在创建一个新 View 并将数据传递给它,这实际上意味着它正在发送信息的副本。由于参数没有 passed by reference (已弃用并且在较新的 PHP 版本中已被删除),您无法完成您想要的。

话虽如此,您的方法似乎有缺陷。在我看来,您正在 View 中构建分页,这是您不应该在那里做的事情。 Laravel 已经提供了一种非常简单的方法来创建 Pagination ,您也许应该研究一下。

关于php - Laravel - 从@include 修改并返回变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30642235/

相关文章:

php - 从php字符串变量中删除字符

php - 如何在下拉菜单中输出 MySql 行

php - 从 Laravel 集合中删除重复属性

php - Laravel eloquent 获取关系数

php - 如何在 Laravel 中为模型命名空间以免与现有类发生冲突?

Laravel Multi-Tenancy 方法。从哪儿开始

php - 此 React 应用程序中的实际数据和演示数据不同

javascript - 如何在 Laravel webpack.mix.js 中添加全局函数?

php - 找不到 Controller 方法 - laravel 4

php - php 中的视频上传