Как скрыть пустые поля в таблице? - PullRequest
0 голосов
/ 04 июня 2019

На данный момент, я могу видеть все перечисленные города. Я хотел бы видеть только те, в которых есть порядок. Как это сделать? Спасибо заранее за любую помощь! Сценарий написан на cakephp, к сожалению, я просто изучаю и осваиваю этот фреймворк с нуля. Я надеюсь, что это не сложно, или, если я могу сделать это на этом коде, вам нужно перестроить контроллер?

 <?php foreach ($list_city as $city): ?>
        <span class="cities"><?= h($city->name) ?></span>
      <?php $licz=1; foreach ($orders as $order): ?>
        <?= '<table>' ?>

        <?php if($order->customer->city->name == $city->name): ?>
          <td style="width: 10%; text-align: center;">
                <span>
              <?= $this->Form->postLink('<span class="status-icon icon-circle-empty"</span>', ['action' =>'fajrant', $order->id],
                                ['title'=>__('Dostarczono?'), 'escape'=>false,
                                'confirm' => __('Czy dostarczono zamówienie: {0}?', $order->customer->address)]) ?>
            </span>
          </td>
          <td>
            <span>
                 <?= h($order->customer->address) ?>
            </span>

            <?php if($order->product_1>0) {
             echo ('<span class="produkt_butt">');
             echo $this->Number->format($order->product_1) . ' szt' . '</span>'; }

             if($order->product_2>0) {
               echo ('<span class="produkt_butt1">');
               echo $this->Number->format($order->product_2) . ' szt' . '</span>'; }
             ?>

            <span><?= h($order->description) ?></span>
          </td>
          <td>
            <span><?= $this->Number->currency($order->price,'',['precision' => 0]) ?></span>
          </td>
          <td>
              <a href="tel:<?= h($order->customer->phone); ?>" target="_blank"></a>
          </td>
          <td>
            <span><?= $this->Html->link(__('') . '', ['action' =>'view', $order->id], ['title'=>'Zobacz zamówienie', 'class'=>'chev-icon icon-chev-right']) ?></span>

          </td>
        <?php endif ?>
        <?= '</table>' ?>

1 Ответ

0 голосов
/ 04 июня 2019

Я бы сделал что-то, как показано ниже.В идеале, вы бы хотели, чтобы база данных возвращала что-то ближе к этой структуре.

Забудьте о списке городов, нас не волнуют города, для которых у нас нет заказов, это то, что вы говорите.Таким образом, цикл заказов, введите их по городу.

<?php

    $ordersByCity = [];
    foreach ($orders as $order) {
        $ordersByCity[$order->customer->city->name][] = $order;
    }

    //var_dump($ordersByCity);

    foreach ($ordersByCity as $customerCityName => $orders) {
        //loop on each city. We could know how many to expect with a simple `count($orders)`
        echo 'span class="cities">' . h($customerCityName) . '</span>';
        foreach ($orders as $order) {
            ...  //echo details for each order
        }
    }

...