Niestety nie mogę przetestuj ten kod już teraz, ale przeglądając dokumenty i kod (w Illuminate/Pagination/Environment
) domyślam się, że możesz coś takiego:
# use default 'page' for this
$collection1 = Model::paginate(20);
# use custom 'other_page' for this
$collection2 = Model2::paginate(20);
$collection2->setPageName('other_page');
Metoda setPageName()
nie jest udokumentowana w dokumentach, ale jest to metoda publiczna obok metod wskazanych w dokumentacji, więc powinna działać poprawnie. Dla porównania, jest to deklaracja (l 171-180 w vendor/laravel/framework/src/Illuminate/Pagination/Environment.php
.):
/**
* Set the input page parameter name used by the paginator.
*
* @param string $pageName
* @return void
*/
public function setPageName($pageName)
{
$this->pageName = $pageName;
}
teraz wziąć pod uwagę, że będzie masz inny ciąg kwerendy dołączany do adresu URL, więc trzeba powiedzieć paginacji to rozważyć . Użyj metody appends()
:
$collection1->appends(array_except(Request::query(), 'page'))->links();
$collection2->appends(array_except(Request::query(), 'other_page'))->links();
to znaczy powiedzieć każdy Presenter zbudować url ze wszystkich ciągów zapytań (tablicę wynikającej z Request::query()
bez bieżący wskaźnik używany przez paginator, czy będzie koniec z podwójną wartością). array_except()
jest pomocnikiem wbudowanym w tablicę Laravel, który zwraca podaną tablicę (pierwszy parametr) usuniętą z przekazanego indeksu (drugi parametr).
Spróbuję przetestować ten kod tak szybko, jak tylko mogę, ale powinien zadziałać. Daj mi znać w każdym razie!
Nie udało mi się uzyskać niczego działającego przy użyciu opisanej metody. Gdzie jesteś? – vlasits
'$ collection2-> setPageName ('other_page');' >>> ** call_user_func_array() oczekuje, że parametr 1 będzie prawidłowym oddzwanianiem, klasa "Illuminate \ Support \ Collection" nie ma metody "setPageName" ** – daVe
Jeśli chodzi o downwiot, zastanów się, czy ta odpowiedź może odnosić się do innej wersji Laravel od tej, z której korzystasz ** teraz ** i co działało ** wtedy ** może nie działać w nowszej wersji. Tylko mówię. –