advmaker/blade-loop

Extends blade template engine with @loop, @endloop, @break, @continue and in-loop variables

v1.0.0 2016-04-14 11:05 UTC

This package is auto-updated.

Last update: 2024-03-26 01:04:22 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

This package inspired from https://github.com/RobinRadic/blade-extensions but instead of doing multiple things with blade engine (ie: markdown parsing, multiple extensions, etc) it just adds @loop directive to support twig-like loop and loop control directives.

Install

Via Composer

$ composer require advmaker/blade-loop

And add provider to config/app.php

'providers' => [
    //...

    Advmaker\BladeLoop\BladeLoopServiceProvider::class,

    //...
]

Explanation

By default, before v5.2.12 blade doesn't have @break and @continue which are useful to have. And before version 5.2.22 it's not supported conditions. So that's included.

Furthermore, the $loop variable is introduced inside loops, (almost) exactly like Twig. Description table:

Variable Description
$loop->index1 The current iteration of the loop. (1 indexed)
$loop->index The current iteration of the loop. (0 indexed)
$loop->revindex1 The number of iterations from the end of the loop (1 indexed)
$loop->revindex The number of iterations from the end of the loop (0 indexed)
$loop->first True if first iteration
$loop->last True if last iteration
$loop->length The number of items in the sequence
$loop->parent The parent context

Note: length, last, revindex1 and revindex variables are only available for PHP arrays, or objects that implement the Countable interface.

Usage

@loop($array as $key => $val)
    {{ $loop->index;}}        {{-- int, zero based --}}
    {{ $loop->index1; }}      {{-- int, starts at 1 --}}
    {{ $loop->revindex; }}    {{-- int --}}
    {{ $loop->revindex1; }}   {{-- int --}}
    {{ $loop->first; }}       {{-- bool --}}
    {{ $loop->last; }}        {{-- bool --}}
    {{ $loop->even; }}        {{-- bool --}}
    {{ $loop->odd; }}         {{-- bool --}}
    {{ $loop->length; }}      {{-- int --}}

    @loop($val as $inner_key => $val)
        {{ $loop->parent->odd; }}
        {{ $loop->parent->index; }}
    @endloop  

    @break(false)

    @continue($loop->index === $loop->revindex)
@endloop

Change log

Please see CHANGELOG for more information what has changed recently.

Testing

$ composer test

Contributing

Please see CONTRIBUTING and CONDUCT for details.

Security

If you discover any security related issues, please email github@advmaker.net instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.