فصل ۵:‌ Viewها در لاراول

06 آبان 1397
درسنامه درس 6 از سری لاراول
Laravel-Main-veiw

ضمن عرض سلام و خسته نباشید خدمت تمامی همراهان روکسو. امیدوارم تا به اینجای کار مطالب لاراول مورد پسند شما قرار گرفته باشد. پس از بررسی کنترلرها که به عنوان قلب تپنده‌ی هر وب سایت معرفی می‌شود، حال نوبت به ارائه‌ی دومین کلید اصلی هر وب سایت یعنی Viewها است. ویو به عنوان یک نمایشگر کاملا حرفه‌ای درنظر گرفته می‌شود که نیازهای کاربران به واسطه‌ی آن به سرور ارسال و پاسخ مرتبط دریافت می‌شود. در این بخش به توضیح دقیق View می پردازیم.

مقدمه

اجازه بدهید در ابتدا به مبحث routing بازگردیم. اگر به خاطر ندارید اصلا نگران نباشید. routing همان مسیردهی و ساخت مسیر برای وب اپلیکیشن شما بود که در پوشه‌ی routes قرار داشت حال برای اینکه مطالب این بخش را به دقت متوجه شوید نگاهی گذار به مقاله‌ی زیر داشته باشید:

در واقع با استفاده از route ها متدهای HTTP را اجرا کرده و درخواست کاربران را به کنترلر ارسال و در نهایت پاسخی را که دریافت می‌کنیم در خروجی نمایش می‌دهیم. در این بخش می‌خواهم به نحوه‌ی نمایش پاسخ درخواست‌ها به کاربران، صحبت کنیم.

تعریف View برای کنترلر

همانطور که در فصل ۲-۲ توضیح دادیم، فایل‌های ویو در پوشه‌ی resources/view قرار دارند. بنابراین برای شروع کار یک فایل با عنوان دلخواه مثلا home.blade.php ایجاد می‌کنیم. سپس محتویات درون فایل را برابر کدهای زیر قرار دهید:

<html>
<head>
    <title>Roxo Application</title>
</head>
<body>
<div class="container">
    Hello World
</div>
</body>
</html>

بسیار عالی تا به اینجای کار توانستیم یک ویو ایجاد کنیم. حال می‌خواهیم این ویو را به یک مسیر routing‌ خاص متصل کنیم. یعنی می‌خواهیم وقتی کاربر آدرس مثلا http://www.roxo.ir/home‌ را وارد کرد، به صفحه‌ی مشخصی ارجاع داده شود.

برای تعریف یک routing مطابق با آموزش فصل ۳، ابتدا فایل web.php را از مسیر routes/web.php باز کرده با استفاده از یکی از روش‌های زیر یک view‌ ایجاد کرده و نام فایلی را که در مسیر resources/view ایجاد کرده‌ایم به تابع یا متد view ارسال می‌کنیم:

// راه اول برای اضافه کردن ویو
Route::get('/home', function(){
    return view('home');
});

// راه دوم برای اضافه کردن ویو
Route::get('/home', function(){
    return View::make('home');
});

بسیار عالی! به شما تبریک می‌گوییم. در صورتیکه سرور لاراول خود را باز کنید و آدرس http://localhost/home رو بزنید (البته این آدرس برای هر پروژه‌ای متفاوت خواهد بود) قطعا با صفحه‌ی Hello World مواجعه خواهید شد. به همین سادگی شما توانستید یک ارتباط بین مسیر خود و در نهایت ویو خود ایجاد کنید. اگر بخواهید یک کنترلر خاص را به یک ویو خاص ارجاع دهید ابتدا باید در فایل خود دستوری مشابه دستور زیر را اعمال کنید:

public function home(){
      return view('home');
}

سپس یک مسیردهی مشخص انجام دهید:

Route::get('/home', 'HomesController@home');

متد exist

از این متد زمانی استفاده می‌شود که بخواهیم وجود و یا عدم وجود یک صفحه ویو را بررسی کنیم و دستور آن به صورت زیر می‌باشد:

use Illuminate\Support\Facades\View;

if (View::exists('emails.customer')) {
    //
}

ارسال داده به View

مهم‌ترین قسمت هر کنترلر داده‌هایی‌ست که به یک ویو ارسال و دریافت می‌کند. حال این سوال برای شما پیش می‌آید که منظور از داده‌های موجود در کنترلر چیست؟ داده‌هایی که در کنترلر رد و بدل می‌شوند از طریق Model‌ که با Database یا پایگاه‌داده در ارتباط است دریافت می‌شوند. برای روشن‌تر مبحث MVC در لاراول بهتر است مقاله‌ی MVC زیر را مطالعه بفرمایید:

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

// روش شماره ۱
public function home(){
    return view('home', ['name' => 'Roxo.ir']);
}

// روش شماره ۲
public function home(){
    $data = ['name' => 'Roxo.ir'];
    return view('home', $data);
}

ممکن است این سوال برای شما پیش بیاید که عبارت name چیست؟ در پاسخ باید بگوییم که متغییر name داده‌ای است که مقدار Roxo.ir‌ را با خود به ویو انتقال می‌دهد. بنابراین در این مثال در فایل home.blade.php هر جا عبارت {{ name$ }} دیده شود مقدار Roxo.ir‌ در آن جایگزین می‌گردد. صفحه home.blade.php را به صورت زیر ویرایش کنید:

<html>
<head>
    <title>Roxo Application</title>
</head>
<body>
<div class="container">
    Hello {{ $name }}
</div>
</body>
</html>

گاهی می‌توان داده‌های موجود در یک کنترلر را در تمام viewها به اشتراک گذاشت. برای اینکار از متد share استفاده می‌کنیم:

View::share

جهت استفاده از این متد باید همواره دو مقدار variableName و variableValue را ارسال کنید:

View::share('variableName', 'variableValue');

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

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری لاراول توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.