دوره مجازی Laravel - جلسه 6 - آشنایی با Routing فریمورک Laravel



visibility  
mode_comment   ۲۰

به نام خدا و سلام. در برنامه های وب اپلیکیشن یه قسمتی وجود داره برای کنترل و هدایت درخواست های کاربران که بهش میگن مسیر یابی . این مسیر یابی در واقع آدرس هایی رو تعریف میکنه که کاربر میتونه از اونها اطلاعات بخونه یا اطلاعات بفرسته. لاراول هم به عنوان یک فریمورک پیشرفته از یک سیستم routing قوی و ساده استفاده می کنه. در این جلسه با این بخش مهم از فریمورک لاراول آشنا میشیم.

info توجه

این مطلب یک جلسه از آموزش لاراول مبتدی تا پیشرفته می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در آموزش لاراول مبتدی تا پیشرفته

comment دیدگاه کاربران
محمدرضا replyپاسخ

عالی بود واقعاا
خسته باشید …

کیوان علی محمدی

ممنون و موفق باشید.

مجید replyپاسخ

استاد من قبلا فایلهای را راحت با firefox دانلود می کردم ولی جدیداً فایلها آموزش فقط پخش میشه و دانلود نمیشه
کش و کوکی ها را هم پاک کردم مررورگم هم آپدیت است: 53.0.3 (64-bit)
می تونید راهنمایی کنید که چطور ویدئوها را دانلود کنم؟

کیوان علی محمدی

از نرم افزار IDM استفاده کنید.

dpfm32 replyپاسخ

سلام استاد ، خسته نباشید .
یه سوال داشتم ، در انتهای ویدئوی این جلسه شما گفتید میتونیم پارامتر id رو به شکل {?id} بصورت آپشنال در بیاریم ( توی بحث روتینگ )
وقتی id رو آپشنال تنظیم می کنیم ، توی فایل کنترلر چطوری تشخیص بدیم که اون متغیره ارسال شده یا خیر ؟
چون وقتی روی آپشنال قرارش میدیم ، وقتی چیزی توی id وارد نکنیم ، توی کنترلر ارور میگیره میگه :
“Type error: Too few arguments to function App\Http\Controllers\HelloController::index(), 0 passed and exactly 1 expected”

کیوان علی محمدی

سلام دوست عزیز. خوب شما باید اسم متغییر رو در آرگومان های متد کنترلر وارد کنید. اگر مقداری وارد نکنید اون آرگومان مقدار null میگیره.

حامد

ممنون از راهنماییتون ، مشکل حل شد .
من متغیر id$ رو پاس می دادم به متدد کنترلر ، اما باید به شکل id = null$ تعریفش میکردم که اگر خالی بود ارور نگیره .

mahdi98 replyپاسخ

با سلام. توی آموزش گقتید که آدرس ها متغیر ها رو به همون شکل که تعریف شدن به کالبک فانکشن یا متود کنترولر پاس میده ولی در نسخه 5.6 لاراول اینطوری نیست. حالا نمی دونم در نسخه 5.3 اینطوری هست یا نه ولی یه برسی کنید. توی نسخه 5.6 بر اساس ترتیب هست مثل اولین متغیر روت به اولین پارامتر فانکشن پاس داده میشه و دومین متغیر به دومین پارامتر حالا چه نامشون یکی باشه چه نه.
ممنون

کیوان علی محمدی

در نسخه 5.3 در این مورد صحبتی نشده بود. در آموزش ما هم طبق همون مورد پیاده سازی کردیم.

mahdi98 replyپاسخ

با تشکر از شما ولی این قسمت ضعیف بود نمی چرا دوستان میگن عالی.

کیوان علی محمدی

چرا ضعیف بود؟

mahdi98

انتظار داشتم که مباحث روت کامل مطرح بشه در قسمتی که مطعلق به اون و نگید که موارد پیشرفته رو در طول دوره خواهیم گفت.

متین نجاری replyپاسخ

سلام استاد عالی بود واقعا خسته نباشید
فقط من یه سوال کوچیک داشتم
میدونم خارج از درسه ولی لطف میکنید اگر جواب بدید
اونم اینه که تابع ()dd برای چی استفاده میشه
باسرچ کردن چیزی دستگیرم نشد

Masoud Azimi replyپاسخ

با سلام و احترام..
بنده در آدرس دهی به مشکل خورده ام …
حتی وقتی Die & Dump میکنم بازهم در صفحه اصلی فایل welome.blade اجرا میشه …

Route::get(‘/’, function () {
    dd("Dumping");
});
کیوان علی محمدی

سلام. بهتره روند رو یکبار از اول بررسی کنید

امین replyپاسخ

ببخشید در رابطه با این سوال
3- DATETIME منطقه زمانی رو ذخیره نمیکنه ولی TIMESTAMP میکنه پس اگر بخوایم منطقه زمانی هم ذخیره بشه ولی سال 2039 رو مثلا داشته باشیم باید چیکار کنیم؟

امین replyپاسخ

سلام
1- تفاوت DATETIME و TIMESTAMP رو نفهمیدم! سرچ کردم نوشته بود که DATETIME مثلا بازه ی سالش رو میشه از 1000 تا 9999 در نظر گرفت و TIMESTAMP رو در بازه 1970 تا 2038 میشه در نظر گرفت ،خب بنظر شما بهتر نیست TIMESTAMP برای فیلدای تاریخمون انتخاب کنیم؟ چون قصدمون فقط تاریخ گرفتنه و تاریخ هم نمیتونه که بین 9999 یا 1000 باشه و معمولا بین بازه 1970 و 2038 هستش.
2- در تایم استمپ بازه سالمون بین 1970 الی 2038 هستش ، زمانی که سال از 2038 رد کنه وارد سال 2039 بشیم یعنی کار نمیکنه دیگه؟ چه مشکلی پیش میاد؟ برای برنامه هایی که با تایم استمپ مقدار دادیم در سال 2039 چه مشکلی پیش میاد و آیا برای جلوگیری از این کار بهتره که از DATETIME استفاده کنیم که محدودیت نداره یا اونزمان راه حلی پیدا میشه؟
3- DATETIME منطقه زمانی رو ذخیره نمیکنه ولی TIMESTAMP میکنه پس اگر بخوایم منطقه زمانی هم ذخیره بشه ولی سال 2039 رو مثلا داشته باشیم باید چیکار کنیم؟
ممنون

//DATETIME Range
‘1000-01-01 00:00:00’ to ‘9999-12-31 23:59:59’
//TIMESTAMP Range
‘1970-01-01 00:00:01’ UTC to ‘2038-01-19 03:14:07’ UTC
کیوان علی محمدی

سلام
1 – ما معمولا تاریخ از نوع datetime رو ترجیح میدم چون برای محاسبات تاریخی و کوئری هایی از این نوع خیلی خیلی بهتره.
2-دقیقا این مشکلی هستش که سیستم های unix با این timestamp پیدا میکنن و در اون سال 2038 این زمان بندی مشکل پیدا میکنن. حتما حتما از همون نوع date یا datetime استفاده کنید.

خدابنده replyپاسخ

این که لاراول فقط همه روت هایی که در فایل روت رجیستر شده ان رو هندل میکنه به نظرم رسید برای یه سیستم بزرگ فایل روت بایستی تعدا خط بالایی داشته باشه؟ همینطوره آیا همه روت در این فایله آیا داخلی هم کار میشه به کنترلری بره و داخلی روت ها در اون کنترلر تعریف بشه شاید نگهداری رو راحتتر کنه ؟ آیا همینطوره؟ یا همه روت ها فقط در این فایل انجام میشه؟
ممنون

کیوان علی محمدی

اکثر route ها در همین جا تعریف میشن و لاراول فقط دسته بندی کلی برای web و api ایجاد کرده. اما شما می تونید route ها رو به فایل های کوچیکتری بشکونید و ازش استفاده کنیدو مثلا می تونید در سرویس ها بیاید و فایل route تعریف کنید و بارگذاری کنید.

ارسال نظرات

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