Обновление через pjax

135
27 мая 2021, 12:30

Вообщем есть такая проблема, я вывожу данную на страницу в 3 разных массивах. Вот так:

public function actionPayment() {
    $modelPaid = new NewPaid();
    $payments = Payments::find()->where(['user_id' => Yii::$app->user->identity->id, 'type' => Payments::TYPE_WRITEOFF,
        'status' => Payments::STATUS_PAID])->with('shop')->asArray()->all();
    $deposit = Payments::find()->where(['user_id' => Yii::$app->user->identity->id, 'type' => Payments::TYPE_REFILL,
        'status' => Payments::STATUS_PAID])->limit(3)->asArray()->all();
    $invoice = Payments::find()->where(['user_id' => Yii::$app->user->identity->id, 'type' => Payments::TYPE_REFILL,
        'status' => Payments::STATUS_PAID])->andWhere(['!=', 'invoice_number', ''])->limit(3)->asArray()->all();
    return $this->render('payment', compact('d', 'i', 'modelPaid', 'payments', 'deposit', 'invoice'));
}

И дело в то что 2 из них, а именно $deposit и $invoice, мне надо подгружать там есть кнопка "загрузить еще". Я реализовал данную погрузку через 2 отдельных action`а:

public function actionPaymentDeposit($d) {
    if ($d == '') {
        $d = 1;
    }
    $modelPaid = new NewPaid();
    $payments = Payments::find()->where(['user_id' => Yii::$app->user->identity->id, 'type' => Payments::TYPE_WRITEOFF,
        'status' => Payments::STATUS_PAID])->with('shop')->asArray()->all();
    $deposit = Payments::find()->where(['user_id' => Yii::$app->user->identity->id, 'type' => Payments::TYPE_REFILL,
        'status' => Payments::STATUS_PAID])->limit(3 * $d)->asArray()->all();
    return $this->render('payment', compact('d', 'deposit', 'modelPaid', 'payments'));
}
public function actionPaymentInvoice($i) {
    if ($i == '') {
        $i = 1;
    }
    $modelPaid = new NewPaid();
    $payments = Payments::find()->where(['user_id' => Yii::$app->user->identity->id, 'type' => Payments::TYPE_WRITEOFF,
        'status' => Payments::STATUS_PAID])->with('shop')->asArray()->all();
    $invoice = Payments::find()->where(['user_id' => Yii::$app->user->identity->id, 'type' => Payments::TYPE_REFILL,
        'status' => Payments::STATUS_PAID])->andWhere(['!=', 'invoice_number', ''])->limit(3 * $i)->asArray()->all();
    return $this->render('payment', compact('i','invoice', 'modelPaid', 'payments'));
}

Но так выходит сильно много дублированного кода, как это всё дело можно уместить в один action, и что бы всё работало корректно? Вот частичный код страницы:

<?php Pjax::begin(); ?>
    <div class="check-status__wrapp">
        <?php if(!empty($invoice)): ?>
            <?php foreach($invoice as $inv): ?>
                <div class="check-status__block">
                    <p class="check-status__text">Счет №
                        <span class="check-status__span"><?= $inv['invoice_number']; ?></span> от <?=Yii::$app->formatter->asDate($inv['invoice_date']); ?>
                    </p>
                    <p class="check-status__text">
                        <span class="check-status__span"><?=Yii::$app->formatter->asDecimal($inv['amount'], 2); ?></span> руб.
                    </p>
                    <?php if ($inv['status'] == Payments::STATUS_PAID): ?>
                        <p class="check-status__condition check-status__condition_on">Оплачен</p>
                    <?php else: ?>
                        <p class="check-status__condition check-status__condition_off">Не оплачен</p>
                    <?php endif; ?>
                </div>
            <?php endforeach; ?>
        <?php else: ?>
            <div class="check-status__block">
                <div class="empty_res">
                    Пополнений еще не было
                </div>
            </div>
        <?php endif; ?>
    </div>
    <a href="<?=Url::to(['/user/payment-invoice', 'i' => $i++]); ?>" class="show-more">Показать ещё</a>
<?php Pjax::end(); ?>
<?php Pjax::begin(); ?>
    <ul class="fee-history__list fee-history__list_history">
        <?php if(!empty($deposit)): ?>
            <?php foreach($deposit as $dep): ?>
                <li class="fee-history__item">
                    <div class="fee-history__col">
                        <p><?=Yii::$app->formatter->asDate($dep['date']); ?></p>
                    </div>
                    <div class="fee-history__col">
                        <p>
                            <span class="s-medium">
                                <?=Yii::$app->formatter->asDecimal($dep['amount'], 2); ?>
                            </span> руб.
                        </p>
                    </div>
                    <div class="fee-history__col">
                        <?php if ($dep['way'] == 0): ?>
                            <p>Карта</p>
                        <?php else: ?>
                            <p>Счёт</p>
                        <?php endif; ?>
                    </div>
                    <div class="fee-history__col">
                        <p class="s-fz12px">
                            <?php if ($dep['way'] == 1): ?>
                                <a href="" class="fee-history__link">скачать акт</a>
                            <?php endif; ?>
                        </p>
                    </div>
                </li>
             <?php endforeach; ?>
         <?php else: ?>
             <li class="fee-history__item">
                 <div class="empty_res">
                     Пополнений еще не было
                 </div>
             </li>
         <?php endif; ?>
     </ul>
     <a href="<?=Url::to(['/user/payment-deposit', 'd' => $d++]); ?>" class="show-more">Показать ещё</a>
 <?php Pjax::end(); ?>
READ ALSO
Как сделать вложенный цикл foreach в for?

Как сделать вложенный цикл foreach в for?

Создаю в папке с помощью цикла for документы с разным наполнениемЭто наполнение подтягивают из json

123
С чего начать программировать? [закрыт]

С чего начать программировать? [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме

125
Расширить лимит строк и столбцов mysql

Расширить лимит строк и столбцов mysql

Сколько максимум строк и столбцов помещается в mysql? и как этот лимит расширить?

128
Выбор из текста нужных цифр

Выбор из текста нужных цифр

Есть TXT документыПроименованные с 1 до 300

103