TGViewer
| کانال توسعه‌دهندگان لاراول | | کانال توسعه‌دهندگان لاراول | @developixlaravel · 1.54K subscribers
Post #76 737
فصل سه - Views

بخش سوم - کامپوننت ها - قسمت سوم


ویژگی $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, #PHP, #لاراول, #فصل_۳

👤 AmirHossein

💎 Channel: @DevelopixLaravel
  • ❤ 4
  • 👍 1
  • 🔥 1
More from @developixlaravel
  1. Oct 1, 2026روابط پایگاه داده چند ریختی یا Eloquent Polymorphic در لاراول - قسمت اول در لاراول، روابط…
  2. Sep 30, 2026مدیریت همزمانی و قفل‌گذاری روی پردازش‌ها در لاراول (Laravel Atomic Locks) در بخش چهارم از…
  3. Sep 26, 2026🔥 پکیج: ورود با حساب‌های دیگر؛ Socialite برای اضافه‌کردن ورود با حساب‌های دیگر به پروژه ل…
  4. Sep 25, 2026🔒 فقط داده‌های تأییدشده را ذخیره کن وقتی یک فرم ویرایش پروفایل داری، ممکن است کلاینت علاو…
  5. Sep 20, 2026حفاظت از پردازش ها با Laravel Rate Limiter بخش سوم - پیکربندی در قسمت سوم از مجموعه آموزش…
  6. Sep 16, 2026🚀 &rlm;LaraGram Brain منتشر شد! از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraG…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →