⏳۵۰٪ تخفیف فقط تا پایان جشنواره؛ بعدش همه‌چیز به قیمت قبل برمی‌گرده!

مشاهده دوره‌ها
ثانیه
دقیقه
ساعت
روز
راکت
حل شده

چجوری اطلاعاتی رو که از pagination میگیرم به فرانتند تبدیل کنم

11 پاسخ

سلام دوستان
این کد لاراول هست

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 میگیرم باید کجای کد فرانتند بزارم که به درستی هم نمایش بده و هم درست کار کنه.

ممنون میشم راهنمایی کنید.

ثبت پرسش جدید

پاسخ‌ها

11
حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

بهترین پاسخ

برای نمایش لیست کاربرها که باید یه حلقه بزنی
امابرای نمایش لینکهای صفحه بندی دیگه حلقه نمیخواد کافیه هر بار که لیست خونده میشه کلیدهای nextPageUrl و previousPageUrl رو با یه if چک کنی اگه مقداری داشتن در واقع باید دکمه بعدی یا قبلی متناسب با مقدارشون فعال یا غیر فعال شود .
اگر مقدارشون برابر با null بود یعنی دیگه صفحه ی بعدی یا قبلی وجود نداره و اون لینکه باید غیر فعال بشه.

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

کد بکندت خیلی جای تمیز نویسی داره بفرما میخوای چه کوئری ای بزنی تا یه روش مناسب بهت بگم و صفحه بندیش هم راحت باشه.
برای راحتی در صفحه بندی در api فقط میتونی از لینکهای صفحه قبل یا بعد در سمت فرانت استفاده کنی و همین طور تعداد کل رو نشون بدی.

محمدرضا فلکی
محمدرضا فلکی
@m.reza6920

تخصص: Learning Laravel

من فقط میخوام قابلیت pagination رو از طریق api از بکند به فرانتند بدم
یعنی از laravel به laravel و jquery بدم @hosseinshirinegad98

شاید پاسخ شما همین‌جا باشد

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

این کدی هست که من دارم ازش استفاده میکنم

   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(),
            ]
        ]);
    }
حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

خب مشکلت حل شد سوالی نداری؟

محمدرضا فلکی
محمدرضا فلکی
@m.reza6920

تخصص: Learning Laravel

بعد شما اینو داخل فرانتند چجوری پیاده سازی کردید؟
یعنی با foreach یا روش دیگه ای؟
@hosseinshirinegad98

محمدرضا فلکی
محمدرضا فلکی
@m.reza6920

تخصص: Learning Laravel

خیلی ممنون آقای @hosseinshirinegad98

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

خواهش میکنم اگه سوالی داشتی بپرس.

محمدرضا فلکی
محمدرضا فلکی
@m.reza6920

تخصص: Learning Laravel

خیلی ممنونم @hosseinshirinegad98
اگر درباره این کد سوال داشتم حتما میپرسم 🙏

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

و نکته آخر ظاهرفرانتش به این شکل میتونه باشه
 صفحه بندی

محمدرضا فلکی
محمدرضا فلکی
@m.reza6920

تخصص: Learning Laravel

درود مجدد اقای @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
        });
    }
});

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام