۱۴ Mahdi
خطا هنگام استفاده از 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);
            }
        }
Mahdi ۱۳ دی ۱۴۰۱، ۱۷:۱۹

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 میخوریم

Mahdi ۱۳ دی ۱۴۰۱، ۱۷:۲۶

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

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

$request->exept('page');
احمدرضا فاطمی کیا ۱۳ دی ۱۴۰۱، ۱۸:۱۷

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

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


Mahdi ۱۳ دی ۱۴۰۱، ۱۸:۳۰

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

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

احمدرضا فاطمی کیا ۱۳ دی ۱۴۰۱، ۱۸:۴۹

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

Mahdi ۱۴ دی ۱۴۰۱، ۰۷:۲۲

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

احمدرضا فاطمی کیا ۱۴ دی ۱۴۰۱، ۰۹:۴۰

خدمتت

https://uupload.ir/view/video-share4_9eam.rar/
Mahdi ۱۴ دی ۱۴۰۱، ۱۵:۰۳

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

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

احمدرضا فاطمی کیا ۱۴ دی ۱۴۰۱، ۱۶:۱۰

ممنون

Mahdi ۱۴ دی ۱۴۰۱، ۱۶:۴۴

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

بهترین پاسخ
صادق برزگر ۱۵ دی ۱۴۰۱، ۰۴:۰۸

با تشکر از شما

Mahdi ۱۵ دی ۱۴۰۱، ۰۶:۵۳