TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 611 subscribers
Post #293 368
فصل سه - 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 #فصل_۳
✅ @AmirhDeveloper
.
  • ❤ 1
  • 👍 1
More from @amirhdeveloper
  1. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  2. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  3. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  4. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
  5. Sep 19, 2026🟢 سوال اول فرض کنید یک سرویس backend داریم که به PostgreSQL وصل می‌شود. تعداد requestها ن…
  6. Sep 19, 2026خیلی وقته پست‌های کانال فقط درمورد LaraGram بوده، وقتشه یکم جالب‌ترش کنیم اگر ممبرها هنوز…
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 →