Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 07.06.2018 16:20:28

Пагинатор

Допустимый ли такой код пагинатора в laravel? Плохо то, что я напрямую обращаюсь к массиву GET?

Надо что бы первые и последние страницы исчезали из видимости, по мере нахождения на странице.

Например, изначально так: 1 2 3 4. Если окажусь на 6 странице, то первые 2 не будут отображаться и будет так 3 4 5 6.

Код полностью рабочий

 <div class="myPag">
                        <a href="?page=1">Первая</a>
                        <?php
                        if (!empty($_GET['page'])) {

                            if (($_GET['page'] + 3) <= $posts->total()) {
                                $countPag = $_GET['page'] + 3;
                            } else {
                                $countPag = $posts->total();
                            }

                            $prev = $_GET['page'] - 1;

                            if ($_GET['page'] != 1) {
                                echo '<a href=?page=' . $prev . '>Назад</a>';
                            }

                            if ($_GET['page'] > 1) { //это для предыдущих страниц (можно удалить полностью условие, тогда их не будет)
                                $prevPage = $_GET['page'] - 1;
                                $arr = [];
                                for ($j = $prevPage; $j >= 1; $j--) {
                                    $arr[] = $j;
                                }
                                $newArr = array_reverse($arr);
                                $output = array_slice($newArr, -3, 3);

                                foreach ($output as $key => $val) {
                                    echo '<a href=?page=' . $val . '>' . $val . '</a>';
                                }
                            }

                            for ($i = $_GET['page']; $i <= $countPag; $i++) {
                                if ($_GET['page'] == $i) {
                                    echo '<span class="active">' . $i . '</span>';
                                } else {
                                    echo '<a href=?page=' . $i . '>' . $i . '</a>';
                                }
                            }

                            $next = $_GET['page'] + 1;


                            if ($_GET['page'] != $posts->total()) {
                                echo '<a href=?page=' . $next . '>Далее</a>';
                            }
                        } else {
                            for ($i = 1; $i <= 3; $i++) {
                                if ($i == 1) {
                                    echo '<span class="active">' . $i . '</span>';
                                } else {
                                    echo '<a href=?page=' . $i . '>' . $i . '</a>';
                                }
                            }
                            echo '<a href=?page=2>Далее</a>';
                        }
                        ?>

                        <a href="?page=<?php echo $posts->lastPage(); ?>">Последняя</a>

                    </div>

Не в сети

#2 15.08.2018 21:03:31

Re: Пагинатор

Как вывести записи пивотной таблицы, с пагинатором?

<?php
 
namespace App;
 
use Illuminate\Database\Eloquent\Model;
 
class Category extends Model
{
     public function article()
    {
        return $this->belongsToMany('App\Services\Image');
    }
}

Делаю так, всё хорошо работает

$aaa = Category::find(3);
   
dd($aaa->article);

Но если добавить с пагинатором, то будет ошибка

$aaa = Category::find(3)::paginate(2);
   
dd($aaa->article);

Undefined property: Illuminate\Pagination\LengthAwarePaginator::$article

Не в сети

#3 16.08.2018 13:03:45

Re: Пагинатор

1. find возвращает единственную запись. чего там пагинировать?
2. так не бывает класс::метод::метод
3. Дима, ты никогда не научишся если в каждой мелочи будешь полагаться на мнение людей с форумов. я вижу ты бомбишь сразу несколько форумов одинаковыми вопросами, тебе просто некогда думать, ты всегда занят набиванием букв


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

Подвал раздела