4

laravelフレームワークでは、次のようにいくつかのネストされたビューがあります

<mainview>
  loop @include <sub-view>
    loop @include <sub-sub-view>

サブサブビューがいくつあるかのカウンターを保持したいと思います。実際には、行カウンターになります。この変数 ($sub-sub-view-counter) を宣言/初期化する場所と、途中でインクリメントする場所がわかりません。どこに置いても見えず、ビューごとにインクリメントされます。

4

1 に答える 1

1

これはちょっとしたハックかもしれませんが、他に良い方法がない限り...

ヘルパー関数またはオブジェクトのいずれかが必要になります(最も簡単な方法は、それをモデルに配置することです)。デモンストレーションのために、オブジェクト バリアントを選択しました。これは、処理が少し簡単で、何よりもニーズに合わせて拡張しやすいと信じているためです。また、値はオブジェクトごとに保存されるため、これは複数のカウンターを暗黙的にサポートします (関数でこの機能を取得するには、いくつかのフープをジャンプする必要があります)。

class Counter
{
    private $count = 0;

    public function inc()
    {
        return ++$this->count;
    }
}

したがって、この特定の実装では、どこかに作成する必要があります。サブビューを含める前に、このような行を親ビューのどこかに配置するか、with()メソッドを使用して PHP から挿入することができます。

<?php $counter = new Counter(); ?>

いつものようにサブビューを含めます (変数を保持するためにinclude、 ではなくを使用することを忘れないでください)テストのためにループを使用しましたが、もちろん、必要なバリアントを使用することもできます。render$counterfor

@for($i=0; $i<10; $i++)
    @include('home.sub')
@endfor

そして最後に、サブビューでこれを呼び出すことができます

<span>{{ $counter->inc() }}</span>

このモデルをファクトリで簡単に拡張して、アプリケーションのどこからでもカウンター値を取得できますが、ユースケースでは、この基本的なバリアントで十分です。

于 2013-01-16T10:05:16.207 に答える