آموزش Laravel

روش های ارسال اطلاعات از کنترلر به view در لاراول

کنترلر و view در لاراول

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

ارسال و نمایش اطلاعات از کنترلر به view در لاراول

ارسال و نمایش اطلاعات از کنترلر به view در لاراول

توسعه دهندگان لاراول همگی یا موتور فالب ساز “Blade” آشنا هستند اما اجازه بدید برای تکمیل مطلب و دوستانی که آشنایی کمی دارند یک تعریف ساده در ادامه داشته باشیم.

موتور قالب ساز Blade چیست؟

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

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

3 روش ارسال داده ها از کنترلر به view در لاراول

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

ساختار جدول “posts” تصویر زیر می باشد.

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

دریافت داده ها و ارسال به view از طریق کنترلر در لاراول

دریافت داده ها و ارسال به view از طریق کنترلر در لاراول

 

فایل کنترلری هم که ایجاد کردم نامش “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” را نمایش بده.

				
					 <div class="container">
    @if (count($posts) > 100)
        <h1>{{ dd($posts) }}</h1>
        
    @elseif (count($posts) === 200)
    <h1>You have exactly 200 posts</h1>
    
    @else
      <h1>No Posts</h1>
    @endif
  </div>
				
			

مثال 2: استفاده از حلقه forelse

این حلقه همانند foreach عمل میکنه، در مثال زیر تنها محتوای ستون “title” در دیتابیس پیمایش و نمایش داده می شود.

				
					<div class="container">
   @forelse ($posts as $post)
      <p> {{ $post->title }} </p>
   @empty
       <p>No posts have been set</p>
   @endforelse
  </div>
				
			

مثال 3: استفاده از حلقه forelse

نمایش همه شناسه های ایجاد شده

				
					<div class="container">
   @forelse ($posts as $post)
     {{ $loop->index }} 
   @empty
       <p>No posts have been set</p>
   @endforelse
  </div>
				
			

اگر بخواین شناسه های نمایش داده شده به جای اینکه از “0” شروع شوند از “1” شروع شوند از “iteration” استفاده می کنیم.

				
					 <div class="container">
   @forelse ($posts as $post)
     {{ $loop->iteration }} 
   @empty
       <p>No posts have been set</p>
   @endforelse
  </div>
				
			

 

جمع بندی

در این مقاله سعی کردم روش های پرکاربرد ارسال اطلاعات از سمت کنترلر به view رو به همراه مثال توضیح بدم و همچنین با برخی از دستورات موتور Blade شما رو آشنا کنم. امیدوارم این مطلب براتون مفید واقع شده باشه.

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

 

مقاله های آموزشی لاراول

کاربرد HTML

 jQuery

جاوا اسکریپت در 1 ساعت

کاربرد CSS

آموزش ReactJS

صفر تا صد PHP

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *