Метод fragment
Метод fragment класса LengthAwarePaginator
позволяет добавить якорь (фрагмент) к URL-адресам всех
ссылок пагинации. Это полезно, когда нужно, чтобы после
перехода на другую страницу страница прокручивалась
к определённому элементу. Первым параметром метод принимает
строку с названием якоря (например, 'comments' или 'section').
Метод возвращает тот же экземпляр пагинатора с добавленным
фрагментом ко всем URL.
Синтаксис
<?php
$paginator->fragment($fragment);
?>
Пример
Рассмотрим базовый пример использования метода fragment
в контроллере. Предположим, у нас есть комментарии к статье,
и мы хотим, чтобы при переходе на следующую страницу
пользователь автоматически перемещался к блоку комментариев:
<?php
namespace AppHttpControllers;
use AppModelsComment;
use IlluminateHttpRequest;
class CommentController extends Controller
{
public function index()
{
$comments = Comment::paginate(10);
$comments->fragment('comments');
return view('comments.index', ['comments' => $comments]);
}
}
?>
Результат: все ссылки пагинации будут выглядеть так:
http://example.com/comments?page=2#comments
http://example.com/comments?page=3#comments
Пример
Метод fragment можно вызывать цепочкой после
других методов настройки пагинации, например,
после withQueryString:
<?php
namespace AppHttpControllers;
use AppModelsProduct;
use IlluminateHttpRequest;
class ProductController extends Controller
{
public function index(Request $request)
{
$products = Product::where('active', true)
->paginate(15)
->withQueryString()
->fragment('products');
return view('products.index', ['products' => $products]);
}
}
?>
Результат: ссылки сохраняют текущие параметры запроса и добавляют якорь:
http://example.com/products?page=2&sort=price#products
http://example.com/products?page=3&sort=price#products
Пример
В Blade-шаблоне метод fragment автоматически
добавляет якорь ко всем ссылкам, генерируемым методом
links:
<div id="comments">
<h2>Comments</h2>
@foreach ($comments as $comment)
<div>
<h3>{{ $comment->title }}</h3>
<p>{{ $comment->body }}</p>
</div>
@endforeach
<div class="pagination">
{{ $comments->links() }}
</div>
</div>
В результате все сгенерированные ссылки будут содержать якорь #comments. Это позволяет странице автоматически прокручиваться к блоку комментариев при загрузке новой страницы.
Смотрите также
-
метод
links,
который генерирует HTML-код ссылок пагинации -
метод
withQueryString,
который сохраняет параметры запроса в ссылках -
метод
appends,
который добавляет пользовательские параметры в ссылки -
метод
url,
который генерирует URL для конкретной страницы