Программирование, веб-кодинг

Yii2: Ссылки на следующий и предыдущий пост

Полезно под текстом статьи дать ссылки на предыдущую и следующую статью для удобства ориентирования пользователя

Yii2: Ссылки на следующий и предыдущий пост

В модели добавляем функции, которые формируют ссылки на предыдущий и следующий пост. У меня выборка по полю сортировки sort. Если вы пишете посты подряд, то делайте проще, выбирайте по id.

public function getNext() {
        $next = $this->find()->where('course_id=:courseId')->andWhere(['>', 'sort', $this->sort])->addParams([':courseId'=>$this->course_id])->orderBy('sort desc')->one();
        if (isset($next))
            return Url::toRoute(['/course/view', 'id' => $next->id, 'alias' => $next->alias]); // абсолютный роут вне зависимости от текущего контроллера 
        else return null;
    }

    public function getPrev() {
        if($this->sort == '1') return null;
        else 
        {
            $prev = $this->find()->where('course_id=:courseId')->andWhere(['<', 'sort', $this->sort])->addParams([':courseId'=>$this->course_id])->orderBy('sort asc')->one();
            if (isset($prev)) {
                return Url::toRoute(['/course/view', 'id' => $prev->id, 'alias' => $prev->alias]); // абсолютный роут вне зависимости от текущего контроллера 
            } else {return null;}
        }
    }

В виде выводим ссылки под текстом статьи. Вот для примера, для предыдущего поста.

<?php if($model->getPrev() != null) { ?>
                                        <a href="<?php echo $model->getPrev() ?>">
                                            <i class="fa fa-chevron-left" aria-hidden="true"></i>
                                            Предыдущий урок
                                        </a>
                                    <?php } ?>





Читайте также
6 ноября 2017
Обновления и релизы
Yii 2.0.13
2 ноября 2017 вышла новая обновлённая версия Yii 2.0.13 с 60-тью улучшениями и исправлениями косяков.


6 октября 2017
... Программирование, веб-кодинг
Сессии в Yii 2
Для сохранения пользовательских данных между запросами используются сессии