Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Допустимый ли такой код пагинатора в 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>
Не в сети
Как вывести записи пивотной таблицы, с пагинатором?
<?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
Не в сети
1. find возвращает единственную запись. чего там пагинировать?
2. так не бывает класс::метод::метод
3. Дима, ты никогда не научишся если в каждой мелочи будешь полагаться на мнение людей с форумов. я вижу ты бомбишь сразу несколько форумов одинаковыми вопросами, тебе просто некогда думать, ты всегда занят набиванием букв
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Страницы 1