it-swarm-id.com

Sembunyikan item sebelumnya berdasarkan tanggal di dalam foreach loop

Saya memiliki komponen khusus yang menampilkan item "segera hadir" berdasarkan tanggal. Saya mencoba menyembunyikan semua barang yang melewati tanggal hari ini. Namun jika tidak ada item masa depan itu tidak menampilkan teks khusus.

Bagaimana cara melakukannya di dalam loop foreach? Atau bagaimana saya bisa memasukkan php break? Atau adakah cara yang lebih baik untuk melakukan ini?

<?php foreach ($this->items as $item) : ?>
    <?php if($item->state ==1 && strtotime($item->event_date) > strtotime(JFactory::getDate())): ?>
        <div class="cont">
            <!-- Display values from DB -->
        </div>
    <?php elseif($item->state ==1 && strtotime($item->event_date) < strtotime(JFactory::getDate())): ?>
        <!-- Dont display anything -->
    <?php else: ?>
        <div class="cont">
            <!-- Display custom text -->
        </div>
    <?php endif; ?>
<?php endforeach; ?>
1
Kannan Naidu

Anda perlu menangani bagian "lain" di luar loop foreach, karena jika tidak ada item, loop foreach tidak pernah berjalan:

<?php $item_displayed = false; ?>
<?php foreach ($this->items as $item) : ?>
    <?php if($item->state ==1 && strtotime($item->event_date) > strtotime(JFactory::getDate())): ?>
        <?php $item_displayed = true; ?>
        <div class="cont">
            <!-- Display values from DB -->
        </div>
    <?php endif; ?>
<?php endforeach; ?>
<?php if (!$item_displayed) : ?>
    <div class="cont">
        <!-- Display custom text -->
    </div>
<?php endif; ?>

Pada dasarnya, saya menambahkan variabel yang menyatakan bahwa item belum ditampilkan. Jika ada item dalam loop ditampilkan, saya kemudian beralih variabel itu ke true. Setelah loop saya kemudian akan menampilkan teks khusus jika tidak ada item atau jika tidak ada item yang akan datang.

3
David Fritsch