آموزش مقدماتی لاراول - انتقال داده به viewها

خب تا اینجا با نحوه راه اندازی و تعریف مسیرها در لاراول آشنا شدیم و دیدیم که چطور میشه با کمک viewها در لاراول مسیرهای متعدد رو برای وب سایتمون تعریف کنیم. در ادامه و در این پست میخوام نحوه ارسال داده به مسیرها از طرف سرور رو آموزش بدم که بسیار مهمه، پس با من همراه باشید!!! 


در ابتدا یک view دیگه به نام users رو داخل دایرکتوری resource/internal ایجاد کردم.

Image for post
Image for post

حالا برای اینکه این view در دسترس باشه باید یک مسیر دسترسی برای اون تعریف کنیم. برای اینکار همانطور که قبلا هم گفته شد وارد web.php میشیم و یک مسیر مانند زیر ایجاد میکنیم. فقط توجه داشته باشید که از فرم ساده قبلی نمیشه اینجا استفاده کرد چون قراره دیتا برای view ارسال کنیم. 

Route::get('users', function () {
    return view('internal.users'); // or view('internal/users')
});

یه نکته دیگه هم مسیردهی به تابع view هست. همانطور که در بالا مشاهده میکنید چون view مورد نظر ما داخل یک فولدر به نام internal بود باید این مسیر رو هم وارد کنیم. توجه کنید ما دراینجا میتونیم از شکل مرسوم آدرس‌دهی که احتمالا تا حالا استفاده کردید هم میشه استفاده کنیم مثه path/file یعنی بجای . از / استفاده بشه ولی حرفه‌ای تر اینه که . رو در تعاریف خودمون بکار ببریم خروجی نهایتا بصورت زیر هست:

Image for post
Image for post

خب حالا بریم سر وقت ارسال داده به view.

برای این منظور از پارامتر دوم تابع کمکی view استفاده کنیم. با کمک پارامتر دوم این تابع می‌توانیم یک آرایه از داده‌های خود را با یک کلید معین برای view مورد نظر ارسال کنیم. توجه داشته باشید که این کلید (من در اینجا users استفاده کردم) در داخل view باید صدا زده شود تا بتوانیم از داده ارسال شده استفاده کنیم: 

Image for post
Image for post

حالا برای نمایش داده در blade بصورت زیر عمل می‌کنیم:

Image for post
Image for post

خب سینتکس بالا هم مربوط به زبان php هست و حلقه سادست که با کمک echo خروجی رو در قالب لیست برمیگردونه! اما اگر قرار باشه از زبان php به این شکل در viewهامون استفاده کنیم پس blade به چه دردی میخوره‌ 😉😉

همانطور که پیشتر گفتم blade یک موتور مترجم که با یک سینتکس بسیار روانتر فایل‌های view ما رو در زبان php ترجمه میکنه و قابلیت‌هایی رو داره که به خوانایی کدهای ما بسیار کمک میکنه.

در آدرس زیر میتونید با این سینتکس آشنا بشید یا اینکه صبر کنید من توی این دوره هر چی لازم داشته باشید رو بگم 😊

اولین نکته توی این سینتکس اینه که هر دستوری مثه if , for و ... با یک @  شروع میشه و در انتها هم باید اون دستور بسته بشه!

@foreach ($users as $user)
    <p>This is user {{ $user }}</p>
@endforeach

در بین دستورات blade از میتونیم بسادگی از تگ‌های html استفاده کنیم منتهی اگر قراره داده‌ای رو نمایش بدیم مانند بالا باید درون ‍{{ }} قرار بدیم. همین!

به مثال زیر دقت کنید برای دستورات شرطی بصورت زیر عمل میشه:

@if (count($records) === 1)
    I have one record!
@elseif (count($records) > 1)
    I have multiple records!
@else
    I don't have any records!
@endif

باقی سینتکس هم بمرور خواهم گفت...

حالا برگردیم به مثال خودمون و کد نمایش کاربرهارو با سینتکس blade بصورت زیر بازنویسی کنیم:

Image for post
Image for post

اینطوری خیلی خواناتر و نوشتن دستورات هم راحتتررره! نهایته هم خروجه بصورت زیر در خواهد آمد:

Image for post
Image for post

خب به همین راحتی تونستیم داده مورد نظر خودمون رو به view ارسال کنیم. اما نکته دیگه‌ که بوجود میاد اینه که اگر قرار باشه ارسال داده رو از طریق route ها انجام بدیم اینطوری برای یک صفحه مثل نمایش محصول دیجی‌کالا که خیلی داده داره، فایل‌های route ما بسیار شلوغ و کثیف میشن!  اینجاس که کنترل‌ها تعریف میشن که عملیات دریافت، پردازش و ارسال داده بین کاربر (کلاینت) و سرور رو مدیریت می‌کنند.


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

در مطلب بعدی کنترلر‌ها رو بررسی خواهم کرد.