В последнее время я обновил Eloquent до последней версии, и пагинация перестала работать. В основном, когда я вызываю ссылки () в ветке, чтобы напечатать нумерацию страниц, я получаю следующее сообщение об ошибке
Fatal error: Uncaught Error: Call to a member function make() on null in /Applications/XAMPP/xamppfiles/htdocs/*****/public_html/wp-content/plugins/crm/vendor/illuminate/pagination/LengthAwarePaginator.php:140
Stack trace: #0 /Applications/XAMPP/xamppfiles/htdocs/*****/public_html/wp-content/plugins/crm/vendor/illuminate/pagination/LengthAwarePaginator.php(119): Illuminate\Pagination\LengthAwarePaginator->render(NULL)
#1 /Applications/XAMPP/xamppfiles/htdocs/*****/public_html/wp-content/plugins/crm/app/Providers/CMSServiceProvider.php(115): Illuminate\Pagination\LengthAwarePaginator->links()
#2 /Applications/XAMPP/xamppfiles/htdocs/*****/public_html/wp-content/twig-cache/18/189d0df44f1fe623fdad2b6fb631c15897dda3614de070c872657111c85f5f1a.php(333): Herbert\Framework\Application->{closure}(Object(Illuminate\Pagination\LengthAwarePaginator))
#3 /Applications/XAMPP/xamppfiles/htdocs/*****/public_html/wp-content/plugins/properties-integration/ in /Applications/XAMPP/xamppfiles/htdocs/*****/public_html/wp-content/plugins/crm/vendor/illuminate/pagination/LengthAwarePaginator.php on line 140
Тогда если я сделаю dd($clients->links())
внутри моего контроллера я получаю следующее сообщение об ошибке
Warning: call_user_func() expects parameter 1 to be a valid callback, no array or string given in /Applications/XAMPP/xamppfiles/htdocs/*****/public_html/wp-content/plugins/crm/vendor/illuminate/pagination/AbstractPaginator.php on line 377
но если я сделаю dd($clients)
Я получаю объект Eloquent с выбранными записями и текущей страницей.
Вот ссылки на занятия
https://github.com/illuminate/pagination/blob/5.3/LengthAwarePaginator.php#L140-L143
https://github.com/illuminate/pagination/blob/master/AbstractPaginator.php#L405-L424
ОБНОВИТЬ
Я сделал временное решение, которое в основном я использовал доступные функции AbstractPaginator. Если у кого-то есть лучший подход, пожалуйста, не стесняйтесь размещать его.
$function = new Twig_SimpleFunction("render", function ($object) {
$html = '';
$data = array(); // start out array
$data['pages'] = ceil($object->total() / $object->perPage()); // calc pages
$data['si'] = ($object->currentPage() * $object->perPage()) - $object->perPage(); // what row to start at
$data['curr_page'] = $object->currentPage(); // Whats the current page
$max = 7;
if ($data['curr_page'] < $max) {
$sp = 1;
} elseif ($data['curr_page'] >= ($data['pages'] - floor($max / 2))) {
$sp = $data['pages'] - $max + 1;
} elseif ($data['curr_page'] >= $max) {
$sp = $data['curr_page'] - floor($max / 2);
}
if ($data['curr_page'] > $max) {
$html .= '<li ><a href="' . $object->url(1) . '">First Page</a></li>';
}
for ($i = $sp; $i <= ($sp + $max - 1); $i++) {
if ($i > $data['pages']) {
continue;
}
if ($object->currentPage() == $i) {
$html .= ' <li class="active">';
} else {
$html .= '<li >';
}
$html .= ' <a href="' . $object->url($i) . '">' . $i . '</a>
</li>';
}
if ($data['curr_page'] < ($data['pages'] - floor($max / 2))) {
$html .= '<li ><a href="' . $object->url($object->lastPage()) . '">Last Page</a></li>';
}
return $html;
});
Задача ещё не решена.
Других решений пока нет …