【问题标题】:Foreach scope variable in laravel blade templatelaravel刀片模板中的foreach范围变量
【发布时间】:2017-02-08 21:00:55
【问题描述】:

好的,我得到了这个带有 laravel Collection 对象的“主”刀片模板,名为 $projects 并传递给视图

'main.blade.php'

...
<div id="projects-list">
    <?php $last_id = 0; ?>
    @include('partials._project')
</div>

<div>{{ $last_id }}</div>
...

'partials._project.blade.php' 模板看起来像这样

@foreach($projects as $project)

    <?php $last_id = $project->id ?>

    <a href="{{ action('ProjectController@index', $project->uri) }}">
        <h4>{{ $last_id }}</h4> 
        <img src="{{ $project->getProjectImage($project->poster) }}">
    </a>
@endforeach

问题是此时&lt;h4&gt;{{ $last_id }}&lt;/h4&gt;我得到了正确的项目ID值(所以最后一个块显示6的值)

但在我的 main.blade.php 中 &lt;div&gt;{{ $last_id }}&lt;/div&gt;(循环结束后)我得到 0(初始值)

我猜刀片 @foreach 循环对外部范围的变量没有影响...... 还是我错了?

【问题讨论】:

  • main.blade.php如何与partials._project.blade.php链接。如果你从控制器传递$last_id就可以访问了!
  • partials._project.blade.php 是文件名吗?

标签: php laravel blade


【解决方案1】:

如果我理解正确,在你的循环中,php 创建局部变量$last_id,它不使用你的全局变量$last_id。在您的情况下,您运行循环,创建局部变量$last_id 并将来自$project-&gt;id 的值放在那里。你的全局变量$last_id 没有改变。循环结束后,你从全局范围输出$last_id,它没有改变,所以它等于0,就像你定义的那样

【讨论】:

  • 好的,那么我该如何解决这个问题?.. 我需要为循环内的外部变量分配一个值,然后在循环外访问该值。或者这在刀片中是不可能的?
  • 尝试在$GLOBALS 数组中分配变量。在你的 main.blade 中 &lt;?php $GLOBALS['last_id'] = 0; ?&gt; 而不是 &lt;?php $last_id = 0; ?&gt; 在你的循环中 &lt;?php $GLOBALS['last_id'] = $project-&gt;id ?&gt; 然后 {{ $GLOBALS['last_id'] }}
猜你喜欢
  • 2013-05-06
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
  • 2018-08-05
  • 2013-04-29
  • 2017-06-20
相关资源
最近更新 更多