私はかなり簡単なチャットログビューアを使用しています。これはLaravelページを使用して返されたログを簡単にページに分割します。残念ながら、ページ数を正しくレンダリングしても、ページャーは結果の最初のページを返すだけです。Laravel 5 Paginatorは最初のページのみを返します
ここでコントローラのコードです:
http://localhost/chatlog/search?message=&nick=Saten&channel=&datestart=2017-09-17T14%3A50%3A44&dateend=2017-09-24T14%3A50%3A44&limit=250&sortby=desc&page=3
私は尋ねた他の質問から物事の束を試してみた:
public function search(Requests\ChatSearchRequest $request)
{
//split search up into what we've got
$request->flash();
$nick = $request->input('nick');
$message = $request->input('message');
$channel = $request->input('channel');
$time_start = $request->input('datestart');
$time_end = $request->input('dateend');
$sortby = $request->input('sortby');
$limit = (int) $request->input('limit');
$page = (int) $request->input('page');
$query = ChatMessage::query();
if (!empty($nick))
$query->usersLike($nick);
if (!empty($channel))
$query->fromChannel($channel);
if (!empty($message))
$query->matchMessage($message);
if (!empty($time_start))
$query->betweenTimes($time_start, $time_end);
$query->orderBy('id', $sortby);
$messageResults = $query->take($limit)->get();
$messages = new LengthAwarePaginator($messageResults->all(), $messageResults->count(), 100, $page, ['path' => Paginator::resolveCurrentPath(), 'query' => $request->query()]);
return view('chatlog', compact('messages'));
}
そして、ここでは、フォームでページを生成した要求のようなルックスを使用するものだが、ここでは役に立たない。私はPaginator::resolveCurrentPage()
を使ってリクエストから直接ページを引っ張ってみましたが、成功しませんでした。それを機能させるものは何もないようです。
奇妙なことに、simplePaginateを使用する同じコントローラのインデックスビューは正常に機能します。フォームはLaravel Collectiveフォームで作成されていますが、csrf_tokenを省略してリクエスト側でリクエストをバウンスさせることができますか?
ページングを作成するには、paginate()関数を使用してください。それは使いやすいです。 –