Laravel将第一个Bootstrap横幅设置为Active

时间:2014-03-17 10:20:29

标签: php html twitter-bootstrap laravel

我正在尝试循环保存在数据库上的一堆横幅,我需要将第一个横幅设置为活动状态。我试过if($ banner-> first){{'active'}} endif,但这对我来说似乎并不适用,因为所有项目都设置为活动状态。我想将id设置为1,但是如果有人删除了带有该id的图像,那么这会破坏。到目前为止,这是我的代码......

控制器:

public function index()
{
    //
    $banners = Banner::all();
    $pages = Page::all();

    return View::make('page')->with('banners', $banners, 'pages', $pages);
}

查看:

<div id="mainCarousel" class="carousel slide" data-ride="carousel">
    <div class="carousel-inner">
        @foreach($banners as $banner)
                <div class="item @if($banner->first()) {{ 'active' }} @endif">
                    <img style="width: 100%; height: 500px" src="{{ $banner->image }}" alt="{{ $banner->alt }}">
                </div>
        @endforeach
    </div>

    <a class="left carousel-control" href="#mainCarousel" data-slide="prev">
        <span class="glyphicon glyphicon-chevron-left"></span>
    </a>
    <a class="right carousel-control" href="#mainCarousel" data-slide="next">
        <span class="glyphicon glyphicon-chevron-right"></span>
    </a>
</div>

我还尝试过$ banners-&gt; first()以及$ banner-&gt; first()并获得相同的结果。

对此的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

m4tthumphrey在Laravel IRC聊天中给了我正确的答案。所以,如果其他人遇到这个问题,我会在这里给你正确答案。

我认为这是非常自我解释的,但是Laravel基本上会找到数据库中第一个横幅的第一个ID,并将id与之匹配。

@if($banner->id === $banner->first()->id) {{ 'active' }} @endif

我发现如果您为不同的网页设置不同的横幅广告,那么这不是最好的解决方案,如果是这样,那么请尝试。

@foreach($banners as $index => $banner) <div class="item @if($index == 0) {{ 'active' }} @endif"> <img style="width: 100%;" src="{{ $banner->image }}" alt="{{ $banner->alt }}"> </div> @endforeach