2016-07-18 20 views
2

В моем коде лезвия мне нужен счетчик, чтобы дать divs, которые визуализируются уникальным идентификатором цикла foreach. Для этой цели я создал переменную в моем шаблоне лезвия, как это:Измените переменную лезвия ларавеля, не показывая ее

{{ $counter = 0 }} 

Я использую его в HTML, просто выводит его с {{ $counter = 0 }}

а позже, я увеличиваем его так: {{ $counter++ }}

Все это работает как шарм, за исключением того, что в {{ $counter++ }} он не только увеличивает значение переменной, но также выводит ее на представление.

есть ли способ предотвратить это?

+0

В Laravel 5.3 '@if ($ loop-> first) Сделайте что-нибудь на первой итерации. @endif @if ($ loop-> last) Сделайте что-нибудь на последней итерации. @ endif' –

+1

Это классная функция, но мне действительно нужно число для каждого элемента в массиве, а не только кулак и последний. Я не мог найти много документации о переменной цикла, любая идея, если она содержит больше, чем первая и последняя? – ErikL

+1

Плохая, но рабочая версия '' –

ответ

1

Я использую это расширение делать набор переменных на лезвии: https://github.com/RobinRadic/blade-extensions

Вы можете использовать просто как @set ($ граф, 1) или любое значение, которое вы хотите.

1

При первом добавлении логики на блейд-шаблонах это плохая практика, но иногда мы вынуждены делать, в этом случае вы можете просто использовать PHP-тег для него, как это:

<?php $counter++; ?>

Другим способом сделайте это на Laravel 5.4, так как docs указывает:

В некоторых ситуациях полезно вставлять PHP-код в свои представления. Вы можете использовать лезвие @php директиву, чтобы выполнить блок простого PHP в шаблоне:

@php 
    $counter++; 
@endphp 

Если у Вас есть свои позиции по ключам массива вы можете использовать его на @foreach как это:

@foreach ($variable as $key => $value) 
    //current position = $key 
    # code... 
@endforeach