🔥 ۴۰ درصد تخفیف ثبت‌نام دوره‌ها قبل از افزایش قیمت‌ها
۰ ثانیه
۰ دقیقه
۰ ساعت
۱۴ جمال توفیقی
خطا هنگام استفاده از paginate
جامعه لاراول ایجاد شده در ۱۳ دی ۱۴۰۱

سلام هنگام جابه جایی بین صفحات به خطای زیر میخوریم

Call to undefined method App\\Filters\\Filters::page()

که من برای رفع این خطا شرط زیر رو گذاشتم

    public function apply(array $param)
    {
        $key = ['sortBy', 'length', 'q'];
        if (in_array($param, $key)) {
            foreach ($param as $methodName => $value) {
                if (is_null($value)) continue;
                $this->$methodName($value);
            }
        }
    }

منتهی فیلترهامون درست انجام نمیشه برای این مشکل چ باید کرد؟

سلام مهدی عزیز

یه بررسی بکن ببین داخل foreach مقدار value نال هست یا خیر!

خانم پرمیدا نوبختی ۱۳ دی ۱۴۰۱، ۱۷:۱۰

()dd داخل foreach در دسترس نیست یعنی مقداری وارد if نمیشه ک بعد dump یی روش زده بشه

        $key = ['sortBy', 'length', 'q'];
        if (in_array($param, $key)) {
            foreach ($param as $methodName => $value) {
                dd($value);
                if (is_null($value)) continue;
                $this->$methodName($value);
            }
        }
جمال توفیقی ۱۳ دی ۱۴۰۱، ۱۷:۱۹

dd انجام نده یک مقداری رو اکو کن.

اگر فیلتر‌ها اجرا نمیشه مشکل توی شرط و اجرای متد هست.

اینجا:

if (is_null($value)) continue;
      $this->$methodName($value);
خانم پرمیدا نوبختی ۱۳ دی ۱۴۰۱، ۱۷:۲۱
        if (in_array($param, $key)) {
            foreach ($param as $methodName => $value) {
                if (is_null($value)) continue;
                echo $value;
                $this->$methodName($value);
            }
        }

کلا چیزی وارد if نمیشه

اگر if رو برداریم شرط‌ها برقرا ر میشه منتهی تا زمانی ک نخوای صفحه دو یا 3 ... بری چون در غیر اینصورت ب خطای undefine method path میخوریم

جمال توفیقی ۱۳ دی ۱۴۰۱، ۱۷:۲۶

اونجایی که کوئری صفحه زده میشه کلید صفحه رو باید توی شرط قرار بدی تا متد صدا زده نشده.

یعنی شماره صفحه رو از مقدارهایی که پاس میدی خارج کنی.

$request->exept('page');
خانم پرمیدا نوبختی ۱۳ دی ۱۴۰۱، ۱۸:۱۷

مهندس برای چی پارامتر‌ها وارد if ک من گذاشتم نمیشن؟

        if (in_array($param, $key)) {
            foreach ($param as $methodName => $value) {
                if (is_null($value)) continue;
                echo $value;
                $this->$methodName($value);
            }
        }


جمال توفیقی ۱۳ دی ۱۴۰۱، ۱۸:۳۰

چون کلیدی که داره دریافت میشه page هست و توی آرایه مجاز نیست و ثانیا متد page نداری.

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

خانم پرمیدا نوبختی ۱۳ دی ۱۴۰۱، ۱۸:۴۹

در همون صفحه اول ک ما page رو بالا نمیفرستیم طبیعتا کلیدهای موجود هم همون کلیدهای مجاز ما هستن ولی داخل شرط دسترسی به هیچ کدومشون نداریم

جمال توفیقی ۱۴ دی ۱۴۰۱، ۰۷:۲۲

پروژه رو توی گیت قرار بده بررسی بشه.

خانم پرمیدا نوبختی ۱۴ دی ۱۴۰۱، ۰۹:۴۰

خدمتت

https://uupload.ir/view/video-share4_9eam.rar/
جمال توفیقی ۱۴ دی ۱۴۰۱، ۱۵:۰۳

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

مشکل توی اون تاپیک پیگیری میشه.

خانم پرمیدا نوبختی ۱۴ دی ۱۴۰۱، ۱۶:۱۰

ممنون

جمال توفیقی ۱۴ دی ۱۴۰۱، ۱۶:۴۴

مهدی جان توی این تاپیک پاسختون رو گذاشتم، لطفا تایید پاسخ صحیح رو بزنید تا این تاپیک از حالت پیگیری خارج بشه.

بهترین پاسخ
پروشات ابریشمی ۱۵ دی ۱۴۰۱، ۰۴:۰۸

با تشکر از شما

جمال توفیقی ۱۵ دی ۱۴۰۱، ۰۶:۵۳