بخش سوم - کامپوننت ها - قسمت چهارم
درصورتی که یک پکیج توسعه می دهید که شامل چندین کامپوننت می باشد، می توانید به صورت زیر آن را در پروژه ها لود کنید:
ابتدا در یک پروایدر مانند 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 #لاراول #فصل_۳
@AmirhDeveloper
.