سلام دوستان
این کد لاراول هست
public function pagination(Request $req)
{
$query = Admin::query();
if ($s = $req->input('s')) {
$query->whereRaw("name LIKE '%" . $s . "%'")
->orWhereRaw("email LIKE '%" . $s . "%'");
}
if ($sort = $req->input('sort')) {
$query->orderBy('id', $sort);
}
$perPage = 9;
$page = $req->input('page', 1);
$total = $req->count();
$result = $req->offset(($page - 1) * $perPage)->Limit($perPage)->get();
return response()->json([
'data' => $result,
'total' => $total,
'page' => $page,
'last_page' => ceil($total / $perPage),
]);
}
اینم کد فرانتند
$.getJSON("http://localhost:8000/api/customers/pagination", function (data) {
var ul = '';
$.each(data, function (key, value) {
ul += '<li class="page-item"><a class="page-link" href="#"></a></li>';
});
$('#ul').append(ul);
});
متغیر هایی رو که از response json میگیرم باید کجای کد فرانتند بزارم که به درستی هم نمایش بده و هم درست کار کنه.
ممنون میشم راهنمایی کنید.
برای نمایش لیست کاربرها که باید یه حلقه بزنی
امابرای نمایش لینکهای صفحه بندی دیگه حلقه نمیخواد کافیه هر بار که لیست خونده میشه کلیدهای nextPageUrl و previousPageUrl رو با یه if چک کنی اگه مقداری داشتن در واقع باید دکمه بعدی یا قبلی متناسب با مقدارشون فعال یا غیر فعال شود .
اگر مقدارشون برابر با null بود یعنی دیگه صفحه ی بعدی یا قبلی وجود نداره و اون لینکه باید غیر فعال بشه.
من فقط میخوام قابلیت pagination رو از طریق api از بکند به فرانتند بدم
یعنی از laravel به laravel و jquery بدم @hosseinshirinegad98
شاید پاسخ شما همینجا باشد
این کدی هست که من دارم ازش استفاده میکنم
public function users()
{
$users = User::paginate(10);
return response([
'status' => 200,
'message' => 'List of users',
'users' => $users,
'meta' => [
'count' => $users->count(),
'nextPageUrl' => $users->nextPageUrl(),
'previousPageUrl' => $users->previousPageUrl(),
'perPage' => $users->perPage(),
'total' => $users->total(),
'lastItem' => $users->lastItem(),
]
]);
}بعد شما اینو داخل فرانتند چجوری پیاده سازی کردید؟
یعنی با foreach یا روش دیگه ای؟
@hosseinshirinegad98
خیلی ممنون آقای @hosseinshirinegad98
خیلی ممنونم @hosseinshirinegad98
اگر درباره این کد سوال داشتم حتما میپرسم 🙏
درود مجدد اقای @hosseinshirinegad98
اگر بخوام لینک های قبل و بعد رو بزارم توی بلیدم باید توی متد getJSON باشه دیگه؟
و بعد هم باید اینطوری باشه؟ چه شکلی button رو بسازم؟
if (data.meta.nextPageUrl === null && data.meta.previousPageUrl === null)
{
} else {
}
اینم از بقیه کد که لیست admin هارو نشون میشده و کاملا درست کار میکنه. نیازی به اصلاح کردن نداره؟
$.getJSON("http://localhost:8000/api/admins", function(data) {
if (data.admins.data && data.admins.data.length > 0) {
var tbody = '';
$.each(data.admins.data, function(key, value) {
tbody += '<tr>';
tbody += '<td>' + value.id + '</td>';
tbody += '<td>' + value.name + '</td>';
tbody += '<td>' + value.email + '</td>';
tbody += '<td>' + value.created_at + '</td>';
tbody += '<td><a href="https://roocket.ir/admin-panel/admins/edit/' + value.id +
'"><button class="btn btn-info"><span class="symbol-input100"><i class="fa fa-edit" aria-hidden="true"></i></span></button></a> <button data-id="' +
value.id +
'" class="btn delete btn-danger"><span class="symbol-input100"><i class="fa fa-remove" aria-hidden="true"></i></span></button></td>';
tbody += '</tr>';
});
$('tbody').append(tbody);
} else {
Swal.fire({
title: 'توجه',
iconHtml: '!',
text: 'ادمینی وجود ندارد',
confirmButtonText: 'تایید',
showCancelButton: false,
showCloseButton: true
});
}
});