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

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


درصورتی که یک پکیج توسعه می دهید که شامل چندین کامپوننت می باشد، می توانید به صورت زیر آن را در پروژه ها لود کنید:

ابتدا در یک پروایدر مانند App\Providers\AppServiceProvider.php درون متد boot یک نیم اسپیس را به پکیج خود اختصاص می دهید:
public function boot(): void
{
Blade::componentNamespace('Nightshade\\Views\\Components', 'nightshade');
}


در مثال بالا nightshade برابر با نیم اسپیس داده شده می باشد.
و سپس برای استفاده:
<x-nightshade::calendar />


کامپوننت calendar از نیم اسپیس nightshade که در پروایدر تعریف کرده ایم فراخوانی خواهد شد.

متد های داینامیک:

علاوه بر داینامیک بودن متغیر ها در views، متد ها نیز قابل استفاده هستند:
شما میتوانید درون کلاس کامپوننت خود یک متد را تعریف کنید و به صورت invoke درون view استفاده کنید:
public function isSelected(string $option): bool
{
return $option === $this->selected;
}


برای استفاده:
<option {{ $isSelected($value) ? 'selected' : '' }} value="{{ $value }}">
{{ $label }}
</option>


کامپوننت های خطی یا inline:
درصورتی که یک کامپوننت خیلی کوچک نیاز دارید میتوانید با دستور زیر یک کاپوننت اینلاین ایجاد کنید.
php artisan make:component Alert --inline


این کامپوننت ها تنها از یک کلاس تشکیل شده اند و فایل view ندارند.
کافی است درون متد render کد های HTML خود را قرار دهید:
    public function render(): View|Closure|string
{
return <<<'blade'
<div>
</div>
blade;
}


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

گاهی نیاز است دستورات Blade خود را پیاده سازی کنیم، در ادامه به متد های آن می پردازیم.
تمامی متد ها از فساد Blade قابل دسترس هستند.

1- متد directive:
این متد برای تعریف یک دایرکتیو سفارشی استفاده می‌شود. شما می‌توانید یک دایرکتیو سفارشی با نام دلخواه خود ایجاد کنید که در قالب‌های Blade قابل استفاده باشد.
Blade::directive('datetime', function ($expression) {
return "<?php echo ($expression)->format('m/d/Y H:i'); ?>";
});


برای استفاده:
@datetime($post->created_at)


2- متد if:
این متد برای ایجاد دایرکتیوهای شرطی (conditional directives) استفاده می‌شود. این دایرکتیوها به شما امکان می‌دهند تا شرط‌های پیچیده را به صورت خواناتر و ساده‌تر در قالب‌های Blade بنویسید.
use Illuminate\Support\Facades\Blade;

Blade::if('admin', function () {
return isAdmin(); // isAdmin() not a valid function
});


برای استفاده:
@admin
<p>You are an admin.</p>
@else
<p>You are not an admin.</p>
@endadmin


3- متد component:
این متد به شما امکان می‌دهد تا یک کامپوننت کلاس Blade یا یک ویوی Blade را به یک دایرکتیو خاص متصل کنید.
Blade::component('alert', 'components.alert');


برای استفاده:
@alert(['type' => 'danger'])
This is a warning alert!
@endalert


4- متد include:
این متد برای تعریف یک دایرکتیو سفارشی که یک ویوی خاص را شامل می‌شود، استفاده می‌شود. این روش بسیار مشابه استفاده از @include است اما با دایرکتیو خاص خودتان.
Blade::include('components.alert', 'alert');


برای استفاده:
@alert(['type' => 'danger'])
This is a warning alert!
@endalert


🔖 #Laravel, #PHP, #لاراول, #فصل_۳

👤 AmirHossein

💎 Channel: @DevelopixLaravel
  • 👍 3
  • 🔥 3
  • ❤ 2
More from @developixlaravel
  1. Oct 9, 2026روابط پایگاه داده چند ریختی یا Eloquent Polymorphic در لاراول - قسمت دوم در بخش دوم از آمو…
  2. Oct 1, 2026روابط پایگاه داده چند ریختی یا Eloquent Polymorphic در لاراول - قسمت اول در لاراول، روابط…
  3. Sep 30, 2026مدیریت همزمانی و قفل‌گذاری روی پردازش‌ها در لاراول (Laravel Atomic Locks) در بخش چهارم از…
  4. Sep 26, 2026🔥 پکیج: ورود با حساب‌های دیگر؛ Socialite برای اضافه‌کردن ورود با حساب‌های دیگر به پروژه ل…
  5. Sep 25, 2026🔒 فقط داده‌های تأییدشده را ذخیره کن وقتی یک فرم ویرایش پروفایل داری، ممکن است کلاینت علاو…
  6. Sep 20, 2026حفاظت از پردازش ها با Laravel Rate Limiter بخش سوم - پیکربندی در قسمت سوم از مجموعه آموزش…
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 →