💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ amir mohammadkhah
عدم وجود namespace در serviceProvider
جامعه لاراول ایجاد شده در ۰۱ مرداد ۱۴۰۱

طبق ویدیو تدریس شده خطی در routSeviceProvider کامنت شده و برای استفاده راحت‌تر می‌تونیم اون رواز کامنت در بیاریم.

اما در laravel 9 من این خط رو ندارم و حتی اگه به صورت دستی اضافه اش کنم کارایی گفته شده رو نداره.

چرا اون خط حذف شده و برای استتفاده از اون باید چیکار کنیم؟

39e5-image.png

سلام امیر عزیز. وقت به خیر

این مورد در ورژن ۸ و ۹ لاراول فقط با اعمال تغییرات در RouteServiceProvider اجرا میشه و اینکه در فایل web.php به جای پاس دادن آرایه از ساختار متنی ساده استفاده کنید. به ۲ عکس زیر دقت کنید:


64fe-Screenshot from 2022-07-23 17-20-40.png


c4f1-Screenshot from 2022-07-23 17-23-49.png


موفق باشید.

محمد حسن عاطفت ۰۱ مرداد ۱۴۰۱، ۱۲:۵۴

احتمالا متوجه منظور من نشدید. خط زیر در فایل routSeviceProvider وجود نداره! و حتی اگه اضافه هم بشه کارایی گفته شده رو نداره.

<?php
protected $namespace = "App\\\\Http\\\\controller";
amir mohammadkhah ۰۲ مرداد ۱۴۰۱، ۰۸:۳۴

سلام امیر عزیز. وقت به خیر.

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

کلاس RouteServiceProvider کلاس پایه ای Illuminate\\Foundation\\Support\\Providers\\RouteServiceProvider توسعه میده (extend). و وقتی ما داخل آن کلاس میبینیم متوجه وجود ویژگی namespace میشیم پس با این وجود این ویژگی در کلاس RouteServiceProvider هم در دسترس ما هست به این دلیل که scope این ویژگی protected هست.


اما اینکه چرا اعمال نمیشه برمیگرده به کدهای داخل متد boot در کلاس RouteServiceProvider . بصورت پیشفرض لاراول namespace رو برابر با "App\\\\Http\\\\controller" میدونه و به همین دلیل هم Route‌ها بر اساس همین پیشفرض خودش group میکنه در این متد. حالا برای اینکه این ویژگی فعال بشه و شما بتونید مثل آموزش ادامه بدید باید در متد boot در بخشی که میخواد فایل web.php رو فراخوانی کنه شما متد namespace رو اضافه کنید و $this->namespace بهش پاس بدید. (دقیقا مثل تصویری که در پاسخ قبل براتون فرستادم). در اینصورت این ویژگی براتون فعال میشه و کار میکنه.


موفق باشید

بهترین پاسخ
محمد حسن عاطفت ۰۲ مرداد ۱۴۰۱، ۰۹:۱۸

ممنون عالی

حامد قاسمی ۱۳ اسفند ۱۴۰۲، ۱۶:۰۴