TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 611 subscribers
Post #294 609
فصل سه - 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 #لاراول #فصل_۳
@AmirhDeveloper
.
  • ❤ 2
  • 👍 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 →