components و slot در لاراول

کامپوننت ها و اسلات ها در لاراول تقریبا شبیه به section ها و layout ها هستند . در مستندات فریم ورک گفته شده که این مفاهیم راحت تر قابل فهم هست.

برای مثال : برای هشدار به کاربر یا همان alert ها , به جای اینکه هر دفعه کد تکراری بنویسیم
آن را به صورت یک component در ویو ایجاد می کنیم و در جای مد نظر آن را صدا میزنیم

محل تعریف این کامپوننت ها در فولدر views قرار می گیرد (resources->views)
برای مثال من در این فولدر یکفایل php با نام alert.blade.php ایجاد می کنم:

<!-- /resources/views/alert.blade.php -->

<div class="alert alert-{{ $status ?? 'success' }}">
    {{ $slot }}
</div>

در کد بالا ما دو متغییر ایجاد کردیم
یک: status که در صورتی که ما مقدار این متغییر را زمان استفاده مشخص نکنیم به صورت پیش فرض متن “success” قرار می گیرد
دو: slot که در واقع متغییر پیشفرض component می باشد .

حال این کامپوننت را در یکی از ویوها (article/index) صدا میزنیم

<!-- /resources/views/article/index.blade.php -->
@component('alert',[
'status'=>'danger'
])
 <strong>توجه!</strong> خطایی پیش آمده است!
@endcomponent

در کد بالا به وسیله ی دستور component و نام alert ما کامپوننت را صدا زدیم
با status مقدار متغییر را مشخص کردیم
و محتوایی که بین component و endcomponent قرار دارد مقدار slot ما می باشد
توجه داشته باشید که مانند status نمیتوانید slot را صدا بزنید . مگر اینکه از متغییر دیگری استفاده کرده باشید.

مثال

<!-- /resources/views/alert.blade.php -->

<div class="alert alert-{{ $status ?? 'success' }}">
    {{ $slot }}
    
    <br/>
    
    {{ $footer }}
</div>

@component('alert',[
'status'=>'danger',
'footer'=>'goyii.ir - golaravel.ir'
])

 <strong>توجه!</strong> خطایی پیش آمده است!
@endcomponent
goyii.ir-laravel blade
goyii.ir-laravel blade

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

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