سرمایه گذاری متفاوت در سال نو 🍎🌱 ۳۵٪ تخفیف نوروزی ➕ حضور رایگان در مسترمایند نخبگان صنعت نرم‌افزار 💻✅
۰ ثانیه
۰ دقیقه
۰ ساعت
۱۴ 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 ۱۵ دی ۱۴۰۱، ۰۶:۵۳