Skip to content

advmaker/blade-loop

Repository files navigation

blade-loop

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.

About

Loop extension for Laravel Blade engine

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 36