سلام و احترام
ما توی فایل VideoFilter و فایل apply با توجه به foreachای که زدیم گفتیم اگر پارامتری توی کوئریمون بود، اونو داینامیکطور به متد تبدیل کن و صداش بزن. اما اگر چیزیو توی ریکوئست قرار بدیم که بین اون متدهای تعریف شدهی تو VideoFilter نباشه، ارور برمیگرده. مثل ارور زیر که به علت استفاده از paginate اتفاق افتاده.
Call to undefined method App\Filters\VideoFilters::page()
راه حل سادهای ک ب نظر من اومد، تنظیم وایتلیست بود.
حالا یا میتونیم ولیدیشنش کنیم و پارامترهای مورد نیاز رو اونجا قراربدیم، یااا هم به این روش:
public function apply(array $params)
{
foreach ($params as $methodName => $value)
{
$whiteList = ['sortBy', 'length', 'q'];
if(!in_array($params, $whiteList)) continue;
if(is_null($value)) continue;
$this->$methodName($value);
}
}