بخش سوم - کامپوننت ها - قسمت سوم
ویژگی
$attributes به طور خودکار تمامی ویژگیهای اضافیای که به یک کامپوننت Blade پاس داده میشوند را مدیریت میکند. این ویژگی شامل متدهای متعددی برای کار با اتریبیوت ها میشود.
1- متد merge:
این متد به شما اجازه میدهد که ویژگیهای جدیدی را به مجموعه ویژگیهای موجود اضافه کنید و در صورت وجود ویژگیهای تکراری، آنها را ادغام کنید. معمولاً برای کلاسهای CSS استفاده میشود.
<div {{ $attributes->merge(['class' => 'alert alert-' . $type]) }}>
{{ $slot }}
</div>اگر کلاسهای CSS به این کامپوننت پاس داده شوند، merge آنها را با کلاسهای پیشفرض ترکیب میکند. برای مثال:
<x-alert type="success" class="my-custom-class">
Success!
</x-alert>
کلاس نهایی ترکیب شده به صورت alert alert-success my-custom-class خواهد بود.
2- متد class:
این متد به طور خاص برای کار با کلاسهای CSS استفاده میشود. شما میتوانید کلاسهای جدیدی اضافه کنید یا کلاسهای موجود را با شرطهایی مدیریت کنید.
<div {{ $attributes->class(['alert', 'alert-' . $type, 'font-bold' => $isBold]) }}>
{{ $slot }}
</div>اگر $isBold مقدار true داشته باشد، کلاس font-bold اضافه میشود.
3- متد prepend:
این متد برای افزودن ویژگیهای جدید به ابتدا (اولویت) مجموعه ویژگیهای موجود استفاده میشود. اگر ویژگی مورد نظر قبلاً موجود باشد، مقدار جدید در ابتدا اضافه میشود.
<div {{ $attributes->prepend('class', 'font-bold') }}>
{{ $slot }}
</div>اگر کامپوننت قبلاً دارای کلاس font-bold نباشد، به ابتدای لیست کلاسها اضافه میشود.
4- متد filter:
این متد به شما اجازه میدهد که ویژگیها را بر اساس یک شرط فیلتر کنید.
<div {{ $attributes->filter(fn ($value, $key) => $key === 'class' || $key === 'id') }}>
{{ $slot }}
</div>در این مثال، فقط ویژگیهای class و id نگه داشته میشوند و سایر ویژگیها فیلتر میشوند.
5- متد whereStartsWith:
این متد ویژگیهایی را که کلید آنها با رشته خاصی شروع میشود، فیلتر میکند.
<div {{ $attributes->whereStartsWith('data-') }}>
{{ $slot }}
</div>این کد تمام ویژگیهایی که با data- شروع میشوند را به div اضافه میکند.
6- متد whereDoesntStartWith:
این متد ویژگیهایی که کلید آنها با رشته خاصی شروع نمیشود را فیلتر میکند.
<div {{ $attributes->whereDoesntStartWith('wire:') }}>
{{ $slot }}
</div>این کد تمام ویژگیهایی که با wire: شروع نمیشوند را نگه میدارد.
7- متد has:
این متد بررسی میکند که آیا یک ویژگی خاص در مجموعه ویژگیها وجود دارد یا خیر.
@if ($attributes->has('class'))
<div {{ $attributes }}>
{{ $slot }}
</div>
@else
<div class="default-class">
{{ $slot }}
</div>
@endifاین کد بررسی میکند که آیا ویژگی class وجود دارد و در صورت عدم وجود، یک کلاس پیشفرض استفاده میکند.
8- متد hasAny:
این متد بررسی میکند که آیا هر یک از ویژگیهای مورد نظر در مجموعه وجود دارند یا خیر.
@if ($attributes->hasAny(['class', 'id']))
<div {{ $attributes }}>
{{ $slot }}
</div>
@endif
این کد بررسی میکند که آیا یکی از ویژگیهای class یا id وجود دارند و در صورت وجود، div را با آنها رندر میکند.
9- متد get:
این متد مقدار یک ویژگی خاص را برمیگرداند. اگر ویژگی وجود نداشته باشد، میتوانید یک مقدار پیشفرض برای آن تعیین کنید.
<div id="{{ $attributes->get('id', 'default-id') }}">
{{ $slot }}
</div>در اینجا، اگر ویژگی id پاس داده نشده باشد، مقدار پیشفرض default-id استفاده میشود.
این متدها به شما اجازه میدهند که به شکلی انعطافپذیر با ویژگیهای HTML که به کامپوننتهای Blade لاراول پاس داده میشوند، کار کنید. با استفاده از این متدها، میتوانید ویژگیها را فیلتر کنید، ادغام کنید، بررسی کنید که آیا ویژگیای وجود دارد یا خیر، و در نهایت به شکل دقیقتری کامپوننتهای خود را مدیریت کنید.
🔎 #laravel #فصل_۳
✅ @AmirhDeveloper
.