Blade Foreach: первый/последний элемент массива

Шаблоны blade используются для представления данных, нам нужно добавить некоторые проверки и If структуры. Один из примеров это цикл @foreach, когда нужно выполнить какие-либо действия с первым или последним элементом массива.  Blade не поддерживает эту функциональность самостоятельно, итак, что же нам делать?

Под капотом, Blade-файлы в действительности преобразуются в чистый PHP.  Итак, хитрость в том, что мы можем использовать любую функцию из PHP. И с массивами у нас есть две полезных функции что бы получить первый и последний элементы массива:

  • end($array) – перемещает внутренний указатель массива к последнему элементу и возвращает его значение.
  • reset($array) – перемещает внутренний указатель массива к первому элементу и возвращает его значение.

Итак, как это выглядит в настоящем примере с Blade? Предположим, мы хотим скрыть каждый элемент div, кроме первого:

@foreach ($menu as $item)
  <div @if ($item != reset($menu)) class=«hidden» @endif>
    <h2>{{ $item->title }}</h2>
  </div>
@endforeach

Похожий пример — что если мы хотим добавить CSS-класс к последнему элементу меню?

@foreach ($menu as $item)
  <div @if ($item == end($menu)) class=«no_margin» @endif>
    <h2>{{ $item->title }}</h2>
  </div>
@endforeach

Это все. Как вы можете видеть Blade не только шаблонизатор, он обладает мощью структур и функций PHP

 

Перевод

Laravel: Like для коллекций

В коллекциях Laravel 5.1 нет функции like для коллекций, но можно написать подобное поведение при помощи filter.

SQL like preg_match
% .*
_ .