Blade Template
view ها یک منظق مجزا در اپلیکیشن شما می باشد که در مسیر resources/views
ذخیره می شوند. برای پشتیبانی از ساختار کاربردی نمایش (view) در لاراول یا همان Blade Template باید آن فایل را با فرمت blade.php
ذخیره کنید.
Displaying Data
معمولا پس از controller ما view را داریم. محتویات view در مسیر resourses/view
می باشد. ما داده های تولید شده در controller ساخته شده بوسیله متغیرهایی به view ارسال می شود.
<?php public function index() { return view('welcome', ['name' => 'Samantha']); }
داده ارسالی از هر نوع (آرایه ، متغیر) در سمت view در قالب blade به شکل زیر قابل دسترسی و چاپ است:
Hello, {{ $name }}.
پس هر متغیر که در میان {{}}
قرار بگیرد محکوم به چاپ است. ساختار آن در php به شکل زیر است :
<?php echo "Hello {$name}"; ?>
نکته : برای قرار دادن کد های php در قالب blade از ساختار زیر استفاده می کنیم :
@php $currentRoute = (isset($currentRoute)? $currentRoute : 'socialbook') @endphp
قالب بالا تگ باز و بسته php را تداعی می کند و از لاراول ۵.۳ به بعد پشتیبانی می شود.
Template Inheritance
برای مرتب سازی کد ها در لاراول می توانیم یک سری قالب تعریف کنیم (Master Page Layouts) و خروجی controller را با فرمت خاص خودمان به قالب بفرستیم . همچنین می توانیم قالب های متفاوتی به ازای صفحات مختلف (در مثال کلی می توان گفت قالب ادمین و اپ).
Master Page Layout
یک قالب کلی تعریف می کنیم و مکان هایی از اون رو برای دریافت زیر قالب از سمت فایل های دیگر blade تعبیه می کنیم. مثلا قالبی در مسیر layouts/app.blade.php
تعریف می کنیم .
پوشه ای با نام layouts می سازیم و قالب های خود را در آن نگه داری میکنیم. فایل app.blade.php
را در زیر داریم:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>App Name - @yield('title')</title> </head> <body> <div class="container"> @yield('content') </div> <script> @yield('script') </script> </body> </html>
کدهای بالا یک ساختار یا قالب می باشد . جاهایی برای وارد کردن داده دارد. yield
پارامتری به عنوان ورودی می گیرد. با استفاده از همین نام و section
می توان مقادیری را اینجا فراخوانی کرد.
به کلمات کلیدی که در ساختار blade می آیند و قبل از آن ها کاراکتر @ می آید directive می گویند. مثلا در قطعه کد بالا section , yield .
Extended Pages
ساختار پایین از master page layout استفاده می کند و مقادیر خود را در آن وارد می کند.
<!-- Stored in resources/views/child.blade.php --> @extends('layouts.app') @section('title', 'Page Title') @section('content') <p>This is my body content.</p> @endsection
extends
برای این است که بفهمانیم که ما از قالب استفاده می کنیم. مقدار ورودی آن هم یعنی پوشه layouts و فایل app.blde.php که در نهایت خروجی با مقدار layouts.app تعیین شده است.- در بالا کد
section
کد ها را به yield هم نام خود تزریق می کند. section
می تواند یک رشته تزریق کند (title) و یا خروجی html داشته باشد (content).section
با پارامتر نام در نهایت به دنبال yield با همان نام در مسیر extends شده می گردد.
رابطه ای میان directive های گفته شده وجود دارد که در جدول زیر می توانید مشاهده کنید:
extends | Master Page Layout |
section | yield |
ساختار به گونه ای است که yield
مکانی را در masterPage تعیین می کند و با استفاده از section
همان مقادیر را در master page تزریق می کنیم.
include
موارد بالا مربوط به یک قالب کلی از فایل بود . گاهی می خواهیم تا موارد موجود در مثلا content هم بخشی از آن از جایی دیگر بیاید (مثلا get_template_part در وردپرس) . برای این کار فایل را از مسیر view باید توسط include فراخوانی کنیم. مثلا میخواهیم در زمان ساخت محصول خطاهای اعتبار سنجی در یک فایل مجزا در پروژه ما فراخوانی گردد.
@include('errors/new-product')
کد بالا را در پنل ایجاد محصول قرار می دهیم و فایلی در مسیر errors/new-product
می سازیم و در آن خطاهای اعتبارسنجی را قرار می دهیم.
Control Structures
در blade ما از ساختار های اصلی برنامه نویسی نظیر :
- If Statements : ساختار شرطی با همان ساختار در پی اچ پی های خام. همچنین به صورت ترکیبی با تابع
isset
وempty
که می گویدif isset
یاif empty
. در نهایت باید گفت که همین ساختار های جدید است که blade را پیشرفته تر از php خام در ساختار view نمایش می دهد. - Switch Statements : ساختار switch..case با تمامی دستورالعمل های آن نظیر
@switch
,@case
,@break
,@default
- Loops : حلقه های تکرار که شامل for , foreach , while می شود. این ساختار در blade کمی پیشرفته تر است و امکاناتی نظیر Loop Variable برای پیدا کردن اولین (
$loop->first
) دور حلقه یا آخرین ($loop->last
) دور حلقه یا عمق حلقه ($loop->depth
) در حلقه های تو در تو ، دسترسی به index با استفاده از$loop->index
که از 0 شروع می شود یا$loop->iteration
که از 1 شروع می شود داریم. - Comments : کامنت با فرمت blade.
Forms
معمولا فرم های ما در قسمت view ساخته می شوند. ساختار blade امکاناتی را برای استفاده از فرم ها برای ما قرار داده است.
پوشه های پیش فرض view
errors : این پوشه ساختار خطاهای status نظیر 404 , 403 را در آن می سازند.
auth : پس از برپایی سیستم authentication این پوشه ساخته می شود. پس بهتر است ما پوشه ای با این نام نسازیم.
دیدگاهتان را بنویسید