Реализация подгрузки контента

70
04 мая 2021, 03:30

Имеется такой код: https://pastebin.com/7m8PfCJi

Controller:

public function catalogAction()
    {
        $count = 10;
        if (strcasecmp($_POST['action'], 'loadContent') == 0) {
            $count = $_POST['id'];
        }
        $pagination = new Pagination($this->route, $this->model->productsCount());
        $vars = array(
            'pagination' => $pagination->get(),
            'count' => $count,
            'list' => $this->model->productsList($this->route,(int)$count),
        );
        if (strcasecmp($_POST['action'], 'loadContent') != 0) {
            $this->view->render('Каталог', $vars);
        }
    }

View:

<script>
$(document).on('click','.read-more',function(e){
    e.preventDefault();
    var id = $(this).data('id') || 0;
    // Вставляем полученный контент в HTML блок с id="content"
    $("#content").load("/catalog/",{action:"loadContent", id:id});
});
</script>
<div  class="catalog-page-title">
    <h1 class="page-title"><a href="/">Главная</a> > Каталог</h1>
</div>
<?php if (empty($list)): ?>
    <div class="empty-container">
        <p>Каталоги ненайдены</p>
    </div>
<?php else: ?>
        <div class="catalog-container">
        <?php foreach ($list as $val): ?>
            <div class="catalog-block">
                <div class="catalog-img-block">
                    <a class="" href="/catalog/<?php echo $val['id']; ?>">
                        <img src="public/images/1.jpg" alt="Изображение">
                    </a>
                </div>
                <div class="catalog-info-title">
                    <a href="/catalog/<?php echo $val['id']; ?>"><?php echo htmlspecialchars($val['title'], ENT_QUOTES); ?></a>
                </div>
            </div>
        <?php endforeach; ?>
        </div>
    <div id="getContent">
        <a class="read-more" data-id="<?php echo $vars['count']+10; ?>" href="#">Подробнее</a>
        <div id="content"></div>
    </div>
   <?php endif; ?>

Проблема заключается в том, что при выполнении функции load("/catalog"... подгружается контроллер с функцией catalogAction и я никак не могу придумать как из нее подгрузить данные

Answer 1

В случае с extract нельзя обращаться к $vars, так как ключи этого массива будут самостоятельными переменными. Надо обращаться к $count, $list и тд.

Хотя у меня есть ощущение, что никак не получишь их. Есть вариант возвращать через ob_start (кеширование) html и переменные по JSON. Ну это костыль

Почему? Потому что твое обращение к контроллеру вернется как html, а переменных уже не будет (вероятно), так что надо json отправлять еще с переменными, если хочешь.

READ ALSO
php ветвление процессов

php ветвление процессов

как на php разветвить процесс так чтобы родительский процесс не дожидался завершения дочернихТестирую на винде, запускаю рабочий на убунту

104
Как сделать один &ldquo;слушатель&rdquo; для разных EditText,

Как сделать один “слушатель” для разных EditText,

Есть два EditText etDay и etMonthЕсть два слушателя для каждого свой:

80
Динамический массив целых чисел

Динамический массив целых чисел

Спроектируйте класс Array

88
Синхронизация папки GoogleDrive

Синхронизация папки GoogleDrive

GoogleDrive для ПК умеет синхронизировать определённую папку, можно ли это настроить как-то на Андроиде? Если да, то было бы отлично сделать это...

79