با سلام. می خواستم اولین پستی رو که در این دوره قرار میدم اختصاص داده بشه به این که لاراول چیست؟ دیدم چه کاریه هرکس که سری به این پست زده حتما میدونه لاراول چیه دیگه. پس قسمت اول آموزش رو اختصاص میدیم به آدرسی دهی یا همان routing.
با سلام. برید به این آدرس. و فیلم آموزشی نصب لاراول و پیکربندی رو دانلود کنید. بعد این مطلب رو شروع به یادگیری کنید.
این فریم ورک قدرت بی نظیری به شما جهت مدیریت آدرس ها میده.
ساده ترین راه برای آدرس دهی در فریم ورک لاراول اینه که لطف کنید فایل web.php رو که در پوشه routes قرار داره باز کنید.
اگه فایل رو باز کنید این کد رو می بینید:
Route::get('/', function () { return view('welcome'); });
این ساده ترین نوع آدرس دهی در لاراول هست. حالا می پردازیم به توضیح کد بالا»
متد get رو از کلاس Route صدا زده.
دو آرگومان به این تابع پاس داده. اولی میگه که اگه آدرس اصلی سایت درخواست شد اونم به صورت get بیا تابع بی نامی رو که در آرگومان دوم نوشتیم رو اجرا کن.
تابع get می گوید فقط درخواست هایی که به صورت get هستند از این مسیر استفاده کنند. یعنی اگه یه فرم با متد post ارسال کنیم این مسیر براش کار نمی کنه.
اینکه مثلا شما یه آدرسی رو توی مرورگر وارد می کنید بعد اینتر رو میزنید خودش یک درخواست get بشمار میاد.
مقدار / در آرگومان اول یعنی آدرس پیش فرض سایت. یعنی: codex.villagewp.com و codex.villagewp.com/ هیچ فرقی باهم ندارند. توی این قسمت شما آدرس مورد نظر خودتون و یا ساختار اون رو وارد می کنید.
اگه شما یک آدرس شبیه به این تعریف کنید:
Route::get('/user', function () { return 'hello user'; });
هر وقت کاربر به آدرس site.com/user بره, نوشته hello user رو میبینه.
حالا ممکنه شما بخواید بعضی از اطلاعات مورد نیاز خودتون رو از url ای که کاربر وارد می کنه بگیرید در این صورت باید به شکل زیر عمل کنید:
Route::get('/user/{id}', function ($user_id) { return $user_id; });
اگه یک بخش از نحوه تعریف آدرس خودتون رو مثل بالا در {} قرار بدید اون بخش به عنوان یک مقدار به تابع ای که در بخش دوم تابع get است ارسال میشه. پس به این نکته باید توجه کرد که به هر اندازه ای که از {} در تعریف مسیر استفاده می کنید به همون اندازه هم باید پارامتر در تابع تعریف کنید.
الآن اگه کاربر بیاد و آدرس site.com/user/22 رو بزنه فریم ورک عدد 22 رو بهش نشون میده اگه آدرس site.com/user/aa رو هم بزنه aa رو بهم نشون میده برای اینکه بخوایم کاری کنیم که کلید id فقط مقدار عددی قبول کنه باید به شکل زیر کار کنیم:
کد زیر رو در نظر بگیرید:
Route::get('/user/{id}/{name}', function ($user_id,$user_name) { return $user_id; });
حالا می خوایم به فریم ورک بگیم که کلید id فقط عدد و کلید name فقط حروف رو قبول می کنه. باید این کار رو انجام بدیم:
Route::get('/user/{id}/{name}', function ($user_id,$user_name) { return $user_id; })->where([ 'id' => '[0-9]+' , 'name' => '[a-z]+']);
خیلی ساده است. اومدیم قبل از پرانتز بسته get این رو گذاشتیم: <- بعد با استفاده از [ ] که در php به عنوان یک آرایه است آرایه associative ساختیم . بعد به عنوان اولین ایندکس یا کلیدِ آرایه, کلید مورد نظر در آدرس که id بود رو وارد کردیم و با استفاده از عبارت های منظم گفتیم این بخش از آدرس هر حرفش باید از اعدای 0 تا 9 یعنی خود 0 و 9 هم هستند تشکیل شده باشه. برای name هم تعریف کردیم که مقدار از و بین a تا z می پذیره البته توجه کنید که حروف کوچک را فقط قبول می کند برای استفاده از حروف بزرگ هم باید از regular expression یا همون عبارت های منظم استفاده کنید.
خب پایان قسمت اول رو اعلام می کنم....