Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In Mustache, is there a way to check of the list has items, but not repeat it?

Tags:

mustache.php

I would like to be able to check if a list is empty, and if it's not print a block, but I don't want to repeat that block for each item. I just want to be able to echo it once.

Give this following structure:

array(
    "teasers" => array(
        array("title"=>"Teaser Title 1"),
        array("title"=>"Teaser Title 2")
    )
);


{{# teasers }}

    <div class="items-wrap">

        <div class="items">

            {{# . }}

                <div class="item">

                    {{ title }}

                </div>

            {{/ . }}

           </div>

    </div>

{{/ teasers }}

I would like the items-wrap div to only print once, and repeat the item div for each item in the array. As is right now, the items-wrap is repeating once for each item in the teasers array. So... is there a way to check if the main array is not empty, but not repeat it?

The goal is to only print the items-wrap once, if needed.

like image 509
gdaniel Avatar asked Oct 16 '25 15:10

gdaniel


1 Answers

Yes, there's a way. Mustache has the method length. If equal ZERO, is false and the block will not be rendered. Your example:

{{# teasers.length }}
<div class="items-wrap">
    <div class="items">
        {{# teasers }}
            <div class="item">
                {{ title }}
            </div>
        {{/ teasers }}
    </div>
</div>
{{/ teasers.length }}

The tag {{teasers.length}} will check the number of items inside {{teasers}} and will render the block only if not empty.

More information here.

This answer is too late, but I hope it helps someone.

like image 99
Diego Somar Avatar answered Oct 19 '25 15:10

Diego Somar



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!