[英]Incremented variable within nested views
在laravel框架中,我有几个嵌套视图如下
<mainview>
loop @include <sub-view>
loop @include <sub-sub-view>
我想知道有多少子视图。 它实际上变成了一个行计数器。 我不知道在哪里声明/ init这个变量($ sub-sub-view-counter),以及在哪里增加它。 无论我把它放在哪里,它都无法通过每个视图看到和增加。
这可能是一个黑客,但除非没有更好的出现......
您将需要一个辅助函数或一个对象 (最简单的方法是将它放到模型中)。 为了演示,我选择了对象变体,因为我相信它更容易处理,而且最重要的是更容易扩展到您的需求。 此外,这隐式支持多个计数器,因为每个对象都保存了值(您必须通过几个环节跳转才能通过函数获得此功能)。
class Counter
{
private $count = 0;
public function inc()
{
return ++$this->count;
}
}
因此,对于此特定实现,您必须在某处创建它。 在包含子视图之前,您可以在父视图中放置这样的行,或者使用with()
方法从PHP中注入它。
<?php $counter = new Counter(); ?>
你像往常一样包含子视图(记得使用include
,而不是render
,以保持$counter
变量)我使用for
循环进行测试,但你当然可以使用你想要的任何变体。
@for($i=0; $i<10; $i++)
@include('home.sub')
@endfor
最后你可以在子视图中调用它
<span>{{ $counter->inc() }}</span>
您可以使用工厂轻松扩展此模型,以从应用程序的任何位置获取计数器值,但对于您的用例,此基本变体应该足够了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.