روش های ارسال اطلاعات از کنترلر به view در لاراول را با استفاده از مثال های مختلف در این مقاله یاد خواهیم گرفت.
توسعه دهندگان لاراول همگی یا موتور فالب ساز “Blade” آشنا هستند اما اجازه بدید برای تکمیل مطلب و دوستانی که آشنایی کمی دارند یک تعریف ساده در ادامه داشته باشیم.
موتور قالب ساز Blade چیست؟
Blade یک موتور قالب قدرتمند در چارچوب لاراول است. Blade اجازه می دهد تا به راحتی از موتور قالب استفاده کنید، و نوشتن سینتکس را بسیار ساده می کند. موتور قالب Blade دارای ساختار خاص مانند عبارات شرطی و حلقه ها می باشد که می توان از آنها جهت مدیریت داده های ارسالی از کنترلر و در نهایت نمایش محتوا استفاده کرد.
حالا بریم ببینیم به چه شکل می تونیم به فایل view خودمون از طریق کنترلر محتوایی رو ارسال کنیم.
3 روش ارسال داده ها از کنترلر به view در لاراول
در اینجا من داده ها رو از جدولی به نام “posts” در دیتابیس می گیرم و آنها رو به فایل view خودم از طریق متدهای تعریف شده در لاارول ارسال می کنم.
ساختار جدول “posts” تصویر زیر می باشد.
اگر با نحوه پیکربندی دیتابیس و ایجاد چدول در لاراول آشنا نیستید در اینجا می توانید مقاله های آموزشی این فریم ورک رو مطالعه بفرمایید.
فایل کنترلری هم که ایجاد کردم نامش “PostController” هست.
روش 1: استفاده از متد with
وارد فایل کنترلر میشم و تابع index رو به شکل زیر می نویسم.
use Illuminate\Support\Facades\DB;
ublic function index()
{
$posts = DB::table('posts')->find(3);
return view('blog.index')->with('posts', $posts);
}
متد with دو پارامتر می گیره، اولی که باید از نوع رشته باشه که اینجا نام “posts” رو براش گذاشتیم که اشاره به خط کد 5 میکنه، دومین پارامتر مقداری هست که به آن نسبت داده میشه.
در فایل “view” به شکل زیر دریافت و نمایشش میدم.
{{ $posts->title }}
متد with دو پارامتر می گیره، اولی که باید از نوع رشته باشه که اینجا نام “posts” رو براش گذاشتیم و دومین پارامتر مقداری هست که به آن نسبت داده میشه.
در فایل “view” به شکل زیر دریافت و نمایشش میدم.
روش 2: استفاده از متد compact
این متد بیشتر زمانی استفاده میشه که میخواهیم اطلاعاتی به صورت آرایه بازگشت داده شود.
// Controller
public function index()
{
$posts = DB::table('posts')->get();
return view('blog.index', compact('posts'));
}
// View
{{ $posts }}
//or
{{ dump($posts) }}
روش 3: استفاده از آرایه
این روش که متداولترین روش استفاده هست و لاراول هم آن را پیشنهاد می کند ارسال اطلاعات از طریق یک آرایه به عنوان پارامتر دوم هست.
public function index()
{
$posts = DB::table('posts')->get();
return view('blog.index' , ['posts' => $posts]);
}
// or
public function index()
{
return view('blog.index' , ['posts'=> DB::table('posts')->get()]);
}
تا اینجای کار ما با 3 روش ارسال داده ها به view آشنا شدیم، الان می خوایم با برخی از دستورات blade که مدیریت بهتری جهت نمایش اطلاعات ارسالی به ما میدن آشنا بشیم و کار کنیم.
مثال 1: فرض کنید می خوام شروطی قرار بدم بدین شکل:
– اگر رکوردهای دریافتی بیشتر از 100 بود آنها رو شمارش کن و نمایش بده.
– اگر تعداد رکوردها برابر 200 بود، پیام مناسب رو نمایش بده.
– در نهایت اگر شروط بالا برقرار نبود پیام “No Posts” را نمایش بده.
@if (count($posts) > 100)
{{ dd($posts) }}
@elseif (count($posts) === 200)
You have exactly 200 posts
@else
No Posts
@endif
مثال 2: استفاده از حلقه forelse
این حلقه همانند foreach عمل میکنه، در مثال زیر تنها محتوای ستون “title” در دیتابیس پیمایش و نمایش داده می شود.
@forelse ($posts as $post)
{{ $post->title }}
@empty
No posts have been set
@endforelse
مثال 3: استفاده از حلقه forelse
نمایش همه شناسه های ایجاد شده
@forelse ($posts as $post)
{{ $loop->index }}
@empty
No posts have been set
@endforelse
اگر بخواین شناسه های نمایش داده شده به جای اینکه از “0” شروع شوند از “1” شروع شوند از “iteration” استفاده می کنیم.
@forelse ($posts as $post)
{{ $loop->iteration }}
@empty
No posts have been set
@endforelse
جمع بندی
در این مقاله سعی کردم روش های پرکاربرد ارسال اطلاعات از سمت کنترلر به view رو به همراه مثال توضیح بدم و همچنین با برخی از دستورات موتور Blade شما رو آشنا کنم. امیدوارم این مطلب براتون مفید واقع شده باشه.
لطفا اگر نظر و پیشنهادی در خصوص مطالب و پیشبرد آنها دارید خوشحال میشم در قسمت دیدگاه ها مطرح بفرمایید.