- Issue created by @omerida
I have a paginated view that has 37 total pages. We're showing 5 page links at a time, along with first/prev last/next links. This is the HTML:
<ul class="pagination">
<li class="page active"><a class="pagination__link" href="?page=0">1</a></li>
<li class="page "><a class="pagination__link" href="?page=1">2</a></li>
<li class="page "><a class="pagination__link" href="?page=2">3</a></li>
<li class="page "><a class="pagination__link" href="?page=3">4</a></li>
<li class="page "><a class="pagination__link" href="?page=4">5</a></li>
<li class="pagination-next"><a href="?page=1" aria-label="Next page"></li>
<li class="pagination-last"><a href="?page=37" aria-label="Last page"></li>
</ul>
When tome rewrites the pagination links, the last page is turned into "/page/47"
<ul class="pagination">
<li class="page active"><a class="pagination__link" href="/news/page/1">1</a></li>
<li class="page "><a class="pagination__link" href="/news/page/2">2</a></li>
<li class="page "><a class="pagination__link" href="/news/page/3">3</a></li>
<li class="page "><a class="pagination__link" href="/news/page/4">4</a></li>
<li class="page "><a class="pagination__link" href="/news/page/5">5</a></li>
<li class="pagination-next"><a href="/news/page/1" aria-label="Next page"></li>
<li class="pagination-last"><a href="/news/page/47" aria-label="Last page"></li>
</ul>
I narrowed this down to the str_replace()
calls in the PagerPathSubscriber, listener when it goes to replace the href of ?page=3
with /news/page/4
it replaces the regular pagination_link and the partial match in pagination_last.
Have a view with enough content that the start of the href for the first/next/prev/last links is a partial match for one of the numeric pagination links
I fixed it by enclosing the href with quotes during the replacement calls.
$html = str_replace([
sprintf('href="%s"', $original_href),
sprintf(htmlentities('href="%s"'), $original_href)
], [
sprintf('href="%s"', $new_href),
sprintf('href="%s"', $new_href)
], $html);
I will submit a merge request
None
None
None
Active
1.13
Code