Mohsen Rahimpoor
3 سال پیش توسط Mohsen Rahimpoor مطرح شد
2 پاسخ

ارسال دیتا از middleware به middleware بعدی در لاراول

سلام روزبخیر
من یک middleware ایجاد کردم که هدر request رو میگیره ویکسری عملیات انجام میده و مقدار بازگشتی رو میخوام به middleware بعدی ارسال کنه و پس از پردازش در middleware بعدی در نهایت دیتا به کنترلر ارسال بشه.
این نمونه کد middleware اول هستش که یک مقداری در متغیر $callback ذخیره شده و میخوام به Middleware بعدی ارسال بشه :

$request = $request->attributes->add(['headerMiddlewareCallback' => $callback]);
return $next($request);

با اضافه کردن attribute به request میتونم دیتای callback رو در کنترلر بخونم ( زمانی که Middleware دوم رو صدا نمیزنم ) ولی در Middleware دوم نمیشه و ارور دارم
اینم متن اروری که برام میاد :

argument 1 passed to App\Http\Middleware\Api\VerifyUser::handle() must be an instance of Illuminate\Http\Request, null given, called in /var/www/idc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php on line 167

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


ثبت پرسش جدید
Mohsen Rahimpoor
تخصص : در تلاش برای FullStack Develop...
@morahimpoor 3 سال پیش مطرح شد
1

سلام روزت بخیر
نه متد add مقدار مورد نظر رو بازگشت میداد چون توی controller میتونستم دریافتش کنم
ولی مشکل رو حل کردم دلیلشم این بود که داشتم متغیر request رو بعد از add کردن میریختم تو request که مقدارش میشد نال
اینجوری حل شد :

$request->attributes->add(['headerMiddlewareCallback' => $callback]);
return $next($request);

مرسی از پاسخت


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 3 سال پیش مطرح شد
0

سلام عزیز
خطای شما میگه داری null ارسال میکنی به متد
قبل از return next یک dd مقدار request$ رو بگیرید ببینید مقدار دهی شده یا خیر
حدس میزنم متد add شما به درستی مقداری رو بازگشت نمیده.


Mohsen Rahimpoor
تخصص : در تلاش برای FullStack Develop...
@morahimpoor 3 سال پیش مطرح شد
1

سلام روزت بخیر
نه متد add مقدار مورد نظر رو بازگشت میداد چون توی controller میتونستم دریافتش کنم
ولی مشکل رو حل کردم دلیلشم این بود که داشتم متغیر request رو بعد از add کردن میریختم تو request که مقدارش میشد نال
اینجوری حل شد :

$request->attributes->add(['headerMiddlewareCallback' => $callback]);
return $next($request);

مرسی از پاسخت


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

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