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

 Blade چیست و چرا از آن استفاده می‌کنیم؟

Blade یک موتور قالب‌ساز (Templating Engine) است که به شما اجازه می‌دهد منطق PHP را به راحتی در فایل‌های HTML خود قرار دهید. برخلاف برخی موتورهای قالب‌ساز دیگر، Blade شما را از استفاده از کد PHP خام در قالب‌ها محدود نمی‌کند. در واقع، تمام قالب‌های Blade به کد PHP کامپایل و تا زمان تغییر، کش می‌شوند، به این معنی که Blade تقریباً هیچ سرباری به برنامه شما اضافه نمی‌کند.

مزایای استفاده از Blade

  • سینتکس ساده و خوانا: سینتکس Blade بسیار شبیه به HTML است و به همین دلیل یادگیری و استفاده از آن بسیار آسان است.
  • ارث‌بری قالب‌ها (Template Inheritance): این ویژگی به شما اجازه می‌دهد تا قالب‌های اصلی (Layouts) تعریف کنید و سپس قالب‌های دیگر را بر اساس آنها ایجاد کنید. این کار از تکرار کد جلوگیری می‌کند و باعث می‌شود تغییرات در ساختار کلی سایت به راحتی اعمال شود.
  • عملکرد بالا: کامپایل شدن قالب‌ها به کد PHP باعث افزایش سرعت و بهبود عملکرد برنامه می‌شود.
  • امنیت: Blade به صورت خودکار از حملات XSS (Cross-site scripting) جلوگیری می‌کند.
  • قابلیت توسعه‌پذیری: Blade امکانات زیادی را برای توسعه و سفارشی‌سازی فراهم می‌کند.

 

blade-laravel

 

ساختار فایل‌های Blade

فایل‌های Blade با پسوند .blade.php ذخیره می‌شوند و معمولاً در پوشه resources/views قرار می‌گیرند.

 نمایش داده‌ها

برای نمایش متغیرها در قالب Blade، از دو روش زیر استفاده می‌شود:

  • {{ variable$ }}: این روش داده‌ها را به صورت HTML escape شده نمایش می‌دهد. این روش امن‌ترین راه برای نمایش داده‌ها است و از حملات XSS جلوگیری می‌کند.
  • {!! variable$ !!}: این روش داده‌ها را بدون escape کردن نمایش می‌دهد. از این روش فقط زمانی استفاده کنید که مطمئن هستید داده‌ها امن هستند و حاوی کد HTML مخرب نیستند. استفاده نادرست از این روش می‌تواند منجر به آسیب‌پذیری‌های امنیتی شود.

مثال:

blade-laravel

 

ساختار های کنترلی

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

  • شرط‌ ها:

blade-laravel

  • حلقه‌ها:

blade-laravel

 

blade-laravel

 

ارث ‌بری قالب ‌ها

ارث‌بری قالب‌ها یکی از ویژگی‌های قدرتمند Blade است که به شما اجازه می‌دهد تا قالب‌های اصلی (Layouts) تعریف کنید و سپس قالب‌های دیگر را بر اساس آنها ایجاد کنید.

  • extends('layouts.app')@: این دستور مشخص می‌کند که قالب فعلی از قالب blade.php در پوشه resources/views/layouts ارث‌بری می‌کند.
  • ('title', 'صفحه اصلی')section@: این دستور یک بخش با نام title تعریف می‌کند و مقدار آن را صفحه اصلی قرار می‌دهد.
  • yield('content')@: این دستور در قالب اصلی قرار می‌گیرد و مشخص می‌کند که محتوای بخش content از قالب‌های فرزند در این قسمت نمایش داده شود.

مثال:

قالب اصلی (layouts/app.blade.php):

blade-laravel

قالب فرزند (pages/home.blade.php):

blade-laravel

 شامل کردن قالب‌ها (Includes)

برای شامل کردن یک قالب دیگر در قالب فعلی، از دستور include@استفاده میشود.

 

blade-laravel

 

همچنین می‌توانید داده‌ها را به قالب شامل شده ارسال کنید:

 

blade-laravel

 

 کامپوننت‌ها

کامپوننت‌ها به شما اجازه می‌دهند تا قطعه کدهای قابل استفاده مجدد ایجاد کنید.

 

 

 سایر دستورات مفید Blade

  • isset($variable)@: بررسی می‌کند که آیا متغیر تعریف شده است یا خیر.
  • empty($variable)@: بررسی می‌کند که آیا متغیر خالی است یا خیر.
  • auth@: محتوا را فقط برای کاربران احراز هویت شده نمایش می‌دهد.
  • guest@: محتوا را فقط برای کاربرانی که احراز هویت نشده‌اند نمایش می‌دهد.
  • csrf@: یک فیلد مخفی CSRF token ایجاد می‌کند.

 خلاصه

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

در ادامه توضیحات مربوط به Blade در Laravel، سه پاراگراف تکمیلی برای درک بهتر این موتور قالب‌ساز ارائه می‌شود:

 نکات پیشرفته‌تر در مورد کامپوننت‌ها

کامپوننت‌ها در Blade، قطعات کد قابل استفاده مجدد هستند که به شما اجازه می‌دهند رابط کاربری خود را به شکل ماژولار و سازمان‌یافته‌تر طراحی کنید. کامپوننت‌ها می‌توانند شامل HTML، CSS و JavaScript باشند و حتی می‌توانند داده‌ها را از طریق پراپ‌ها (props) دریافت کنند. دو روش اصلی برای تعریف کامپوننت‌ها وجود دارد: کامپوننت‌های مبتنی بر کلاس و کامپوننت‌های ناشناس. کامپوننت‌های مبتنی بر کلاس، انعطاف‌پذیری بیشتری را ارائه می‌دهند و برای کامپوننت‌های پیچیده‌تر مناسب هستند. در این روش، شما یک کلاس PHP ایجاد می‌کنید که منطق کامپوننت را در خود جای می‌دهد. کامپوننت‌های ناشناس، ساده‌تر هستند و برای کامپوننت‌های کوچک و ساده مناسب‌اند. در این روش، شما یک فایل Blade در پوشه resources/views/components ایجاد می‌کنید. برای مثال، فرض کنید شما یک کامپوننت برای نمایش پیام‌های هشدار دارید. می‌توانید یک فایل به نام alert.blade.php در پوشه resources/views/components ایجاد کنید و کد زیر را در آن قرار دهید:

 

blade-laravel

 

سپس می‌توانید از این کامپوننت در قالب‌های Blade خود به شکل زیر استفاده کنید:

 

blade-laravel