021-88881776

آموزش مفاهیم اصلی در Filament

اگر به دنبال یادگیری و تسلط بر “مفاهیم اصلی در Filament” هستید، این مقاله آموزشی برای شما طراحی شده است. در این مقاله، ما به بررسی جنبه‌های مختلف فریم‌ورک Filament خواهیم پرداخت و مفاهیم اساسی آن را از سطح مبتدی تا پیشرفته توضیح خواهیم داد. Filament یکی از ابزارهای محبوب برای ساخت پنل‌های مدیریتی و داشبوردها در فریم‌ورک Laravel است و با ویژگی‌های مدرن و طراحی کاربرپسند خود، توسعه‌دهندگان زیادی را به خود جذب کرده است. در این آموزش Filament، نحوه استفاده از این فریم‌ورک را به ساده‌ترین شکل ممکن بررسی می‌کنیم و در هر مرحله از آموزش، مثال‌های عملی برای درک بهتر مفاهیم ارائه خواهیم داد.

معماری فیلمنت

فریم‌ورک Filament از معماری MVC (مدل-نما-کنترلر) برای مدیریت درخواست‌ها، پردازش داده‌ها و ارتباط بین بخش‌های مختلف برنامه استفاده می‌کند. معماری MVC یکی از متداول‌ترین و پرکاربردترین الگوهای طراحی نرم‌افزار است که به توسعه‌دهندگان این امکان را می‌دهد که کد خود را به صورت منطقی و قابل نگهداری سازمان‌دهی کنند. در فیلمنت نیز این الگو به خوبی پیاده‌سازی شده است تا قابلیت‌های لازم برای ساخت پنل‌های مدیریتی و داشبوردها به ساده‌ترین شکل ممکن در دسترس باشد.

در ادامه، به جزئیات بیشتر در مورد این معماری و اجزای مختلف آن خواهیم پرداخت.

آشنایی با ساختار MVC در Filament

معماری MVC در Filament از سه بخش اصلی تشکیل شده است که هرکدام وظایف خاصی دارند. در اینجا، جزئیات بیشتری در مورد این بخش‌ها و چگونگی عملکرد آن‌ها در فیلمنت آورده شده است:

 مدل (Model)

مدل‌ها در معماری MVC، بخش‌هایی از کد هستند که مسئول مدیریت داده‌ها، تعامل با دیتابیس، و اعمال منطق کسب‌وکار هستند. در فیلمنت، مدل‌ها معمولاً از Eloquent ORM (مدیریت پایگاه داده در لاراول) برای تعامل با دیتابیس استفاده می‌کنند.

مدل‌ها به صورت معمول با جداول دیتابیس ارتباط برقرار می‌کنند و عملیات‌هایی مانند خواندن، نوشتن، و بروزرسانی داده‌ها را انجام می‌دهند. در فیلمنت، وقتی که شما یک منبع (Resource) می‌سازید، این منبع معمولاً به یک مدل مرتبط است. مدل‌ها همچنین ممکن است شامل روش‌هایی برای اعتبارسنجی داده‌ها و محاسبات خاص باشند.

مثال: فرض کنید یک مدل به نام Product دارید که اطلاعات محصولات در فروشگاه شما را ذخیره می‌کند. این مدل می‌تواند شامل متدهایی مانند getPrice() باشد که قیمت محصول را محاسبه می‌کند، یا scopeActive() که فقط محصولات فعال را از دیتابیس بازیابی می‌کند.

نما (View)

نما در MVC مسئول نمایش داده‌ها به کاربر است. در فیلمنت، نماها معمولاً از Blade templates استفاده می‌کنند. Blade یک موتور قالب‌سازی است که به شما این امکان را می‌دهد تا کدهای PHP را داخل HTML ترکیب کنید. این نماها به صورت داینامیک به داده‌ها متصل می‌شوند و به‌طور خودکار اطلاعاتی که از مدل‌ها دریافت می‌کنند را در صفحات وب نمایش می‌دهند.

در فیلمنت، نماها برای طراحی صفحات پنل مدیریتی، جداول، فرم‌ها، و کامپوننت‌های UI استفاده می‌شوند. این نماها می‌توانند شامل Livewire components باشند که تجربه کاربری را بهبود می‌بخشند و از بارگذاری مجدد صفحه جلوگیری می‌کنند.

مثال: صفحه‌ی مدیریت محصولات در فیلمنت ممکن است یک جدول داشته باشد که اطلاعات محصولات مختلف را به نمایش بگذارد. این جدول اطلاعات خود را از مدل Product دریافت کرده و به صورت داینامیک نمایش داده می‌شود.

 کنترلر (Controller)

کنترلرها در MVC وظیفه دارند که درخواست‌ها را دریافت کنند، داده‌ها را از مدل‌ها بگیرند و آن‌ها را به نما ارسال کنند. در فیلمنت، کنترلرها برای مدیریت منطق درخواست‌ها و تعاملات میان مدل و نما استفاده می‌شوند.

کنترلرها به طور خاص برای دریافت درخواست‌های کاربر، پردازش این درخواست‌ها و ارسال نتایج به نما طراحی شده‌اند. به طور معمول، کنترلرها در فیلمنت وظیفه دارند که صفحات، فرم‌ها، و عملیات‌های CRUD (ایجاد، خواندن، بروزرسانی، حذف) را مدیریت کنند.

مثال: فرض کنید کاربر قصد دارد یک محصول جدید را به سیستم اضافه کند. درخواست HTTP به کنترلر ارسال می‌شود و در کنترلر، داده‌های دریافتی از کاربر اعتبارسنجی می‌شود. سپس این داده‌ها به مدل Product ارسال می‌شود تا در دیتابیس ذخیره شوند. پس از این، کنترلر به نما ارجاع می‌دهد تا صفحه تایید نمایش داده شود.

نقش Livewire در فیلمنت

یکی از ویژگی‌های کلیدی که Filament را از دیگر فریم‌ورک‌ها متمایز می‌کند، استفاده از Livewire است. Livewire یک کتابخانه قدرتمند PHP است که امکان ساخت کامپوننت‌های داینامیک و تعاملی را بدون نیاز به نوشتن کد جاوااسکریپت فراهم می‌کند. این کتابخانه به توسعه‌دهندگان کمک می‌کند تا قابلیت‌های تعاملی مانند آپدیت‌های لحظه‌ای، تایید فرم‌ها، و فیلترهای جداول را به راحتی پیاده‌سازی کنند.

در فیلمنت، Livewire بیشتر برای ایجاد تعاملات داینامیک در پنل‌های مدیریتی و داشبوردها استفاده می‌شود. برای مثال، فرم‌ها یا جداولی که به طور داینامیک اطلاعات را بدون بارگذاری مجدد صفحه نمایش می‌دهند یا تغییر می‌دهند، به راحتی می‌توانند با استفاده از Livewire پیاده‌سازی شوند. این کامپوننت‌ها در واقع بخش‌هایی از نمای صفحه هستند که به صورت خودکار با تغییرات داده‌ها و رویدادها به روز می‌شوند.

مثال‌های کاربردی Livewire در فیلمنت

فرم‌ها: فرم‌هایی که اطلاعات را بدون بارگذاری مجدد صفحه ارسال می‌کنند. زمانی که کاربر اطلاعات را وارد می‌کند، اطلاعات به سرور ارسال شده و نتیجه به صورت زنده در صفحه نمایش داده می‌شود.

جداول: جداولی که به کاربر این امکان را می‌دهند تا داده‌ها را فیلتر کرده، مرتب کنند یا صفحات آن را تغییر دهند بدون اینکه نیاز به بارگذاری مجدد صفحه باشد.

واکنش به تغییرات داده‌ها: در مواردی که داده‌ها تغییر می‌کنند، Livewire به صورت خودکار بخش‌های مربوطه از صفحه را به روز رسانی می‌کند. برای مثال، اگر کاربر یک محصول جدید اضافه کند، جداول و نمودارها بدون نیاز به بارگذاری مجدد صفحه به روز می‌شوند.

مثال: فرض کنید یک جدول محصول دارید که می‌خواهید به کاربر این امکان را بدهید که محصولات را بر اساس دسته‌بندی یا قیمت فیلتر کند. با استفاده از Livewire، شما می‌توانید این قابلیت‌ها را به راحتی پیاده‌سازی کنید، به طوری که تغییرات در فیلترها به سرعت در جدول اعمال شوند و صفحه نیازی به بارگذاری مجدد نداشته باشد.

با استفاده از معماری MVC در فیلمنت، کد شما به طور ساختاریافته و قابل نگهداری سازمان‌دهی می‌شود. هرکدام از اجزای مدل، نما، و کنترلر نقش خاص خود را ایفا می‌کنند و به شما کمک می‌کنند تا برنامه‌های مدرن و مقیاس‌پذیر بسازید. همچنین، با استفاده از Livewire، می‌توانید تعاملات داینامیک و جذابی را برای کاربران ایجاد کنید که تجربه کاربری را به سطح بالاتری می‌برد.مفاهیم اصلی در Filament مانند معماری MVC و نقش Livewire، ابزاری قدرتمند را در اختیار شما قرار می‌دهند تا بتوانید به راحتی داشبوردهای مدیریتی و صفحات تعاملی بسازید.

ساختار پروژه در Filament

در فریم‌ورک Filament، همانند سایر فریم‌ورک‌ها، ساختار پروژه نقش کلیدی در سازمان‌دهی کدها و مدیریت مؤثر پروژه دارد. Filament به طور ویژه برای ساخت پنل‌های مدیریتی و داشبوردها طراحی شده است و برای این منظور از ساختار و پوشه‌بندی‌هایی استفاده می‌کند که همخوانی زیادی با فریم‌ورک لاراول دارند. اما در عین حال، فیلمنت پوشه‌ها و فایل‌های خاص خود را برای مدیریت آسان‌تر داشبوردها، منابع، و صفحات ارائه می‌دهد.

در این بخش، به توضیح دقیق‌تر و جامع‌تر پوشه‌بندی‌ها، مسیرها و فایل‌های اصلی موجود در پروژه‌های فیلمنت خواهیم پرداخت.

 پوشه‌بندی‌ها و مسیرها در Filament

فریم‌ورک Filament از ساختار Laravel پیروی می‌کند، به این معنی که بسیاری از پوشه‌ها و مسیرها مشابه لاراول هستند. با این حال، فیلمنت پوشه‌ها و فایل‌های خاصی را برای نیازهای خود اضافه کرده است تا توسعه‌دهندگان بتوانند راحت‌تر با ابزارهای فیلمنت کار کنند.

 پوشه app/Filament

پوشه app/Filament در پروژه‌های Filament شامل تمام کدهای خاص فیلمنت است که در آن، کامپوننت‌ها، منابع (Resources) و تنظیمات مختلف فریم‌ورک قرار دارند. این پوشه به نوعی “قلب” فریم‌ورک فیلمنت است که تمام اجزای مختلف پنل‌های مدیریتی و داشبوردها را در بر می‌گیرد.

محتوای اصلی این پوشه شامل:

Resources: کلاس‌هایی که مدل‌ها را به فیلمنت معرفی می‌کنند. هر منبع (Resource) برای مدیریت یک نوع از داده‌ها و منابع سیستم مانند محصولات، کاربران یا سفارش‌ها طراحی می‌شود.

Pages: این پوشه شامل کلاس‌های صفحه است که به شما اجازه می‌دهند صفحات مختلف پنل مدیریتی خود را پیاده‌سازی کنید. هر صفحه معمولاً یک کلاس جداگانه است که می‌تواند شامل فرم‌ها، جداول، یا سایر کامپوننت‌های تعاملی باشد.

Widgets: ابزارک‌ها یا کامپوننت‌های UI که در صفحات فیلمنت استفاده می‌شوند. این ابزارک‌ها می‌توانند برای نمایش داده‌ها، نمودارها یا اطلاعات لحظه‌ای مورد استفاده قرار گیرند.

Resources/Widgets/Pages: این‌ها مسیرهایی هستند که هرکدام از اجزای خاص فیلمنت مانند منابع، صفحات یا ابزارک‌ها را دسته‌بندی می‌کنند.

 فایل routes/filament.php

فایل routes/filament.php مسئول مدیریت تمام مسیرهای مربوط به پنل Filament است. در این فایل، مسیرهایی که به پنل مدیریتی فیلمنت مربوط می‌شوند، تعریف می‌شوند. به عبارت دیگر، این فایل به شما این امکان را می‌دهد که مسیرهایی مانند /admin یا /dashboard را که برای دسترسی به پنل مدیریتی استفاده می‌شوند، تنظیم و پیکربندی کنید.

در این فایل می‌توانید مسیرهایی برای صفحات و منابع مختلف فیلمنت تنظیم کنید و همچنین تنظیمات مربوط به مسیرهای کنترل‌کننده‌ها (controllers) و کامپوننت‌ها (components) را مشخص نمایید. به طور معمول، این فایل حاوی مواردی مانند تنظیمات امنیتی، اعتبارسنجی مسیرها، و تنظیمات عمومی دسترسی به پنل است.

مثال:

// routes/filament.php

use Filament\Facades\Filament;

Filament::routes(function ($router) {
    $router->get('/', [DashboardController::class, 'index']);
});

این کد یک مسیر ابتدایی برای نمایش داشبورد در فیلمنت است که می‌تواند متناسب با نیاز شما گسترش یابد.

 پوشه resources/views/filament

پوشه resources/views/filament شامل تمام نماهایی است که برای نمایش داده‌ها به کاربر در پنل فیلمنت استفاده می‌شوند. در این پوشه، می‌توانید تمام قالب‌های Blade که به صورت داینامیک به داده‌ها متصل می‌شوند را پیدا کنید. این نماها به طور معمول شامل صفحات مدیریت مانند داشبورد، فرم‌های ورود و ویرایش داده‌ها، جداول داده‌ها، و بسیاری دیگر هستند.

در این پوشه، قالب‌ها (views) معمولاً به طور اختصاصی برای نیازهای فیلمنت طراحی شده‌اند و به شما امکان می‌دهند که پنل مدیریتی را مطابق با نیاز خود سفارشی کنید.

 فایل‌های اصلی و وظایف آن‌ها در Filament

در فریم‌ورک Filament، تعدادی فایل اصلی وجود دارند که وظیفه تنظیم و پیکربندی محیط فیلمنت را بر عهده دارند. این فایل‌ها برای بارگذاری تنظیمات اولیه فریم‌ورک، معرفی منابع، و تعاملات بین مدل‌ها و رابط کاربری اهمیت زیادی دارند.

 فایل FilamentServiceProvider.php

فایل FilamentServiceProvider یکی از اجزای اصلی است که هنگام نصب فیلمنت در پروژه لاراول ایجاد می‌شود. این فایل مسئول بارگذاری تنظیمات و خدمات اصلی فیلمنت در زمان نصب و پیکربندی است. این سرویس پرووایدی (ServiceProvider) اجازه می‌دهد که فریم‌ورک فیلمنت به‌درستی با لاراول تعامل داشته باشد و منابع مختلف فیلمنت مانند جداول، فرم‌ها، و صفحات را در پروژه شما راه‌اندازی کند.

وظایف این فایل شامل:

بارگذاری و ثبت تنظیمات اصلی فیلمنت
تنظیم مسیرهای مربوط به پنل مدیریتی
فعال‌سازی و پیکربندی کامپوننت‌ها، منابع، و ویجت‌ها
مثال:

// app/Providers/FilamentServiceProvider.php

namespace App\Providers;

use Filament\FilamentServiceProvider as BaseFilamentServiceProvider;

class FilamentServiceProvider extends BaseFilamentServiceProvider
{
    public function register(): void
    {
        parent::register();

        // تنظیمات اضافی
    }
}

این فایل به شما این امکان را می‌دهد که هر نوع تنظیمات اضافی را که نیاز دارید، در این بخش اضافه کنید.

پوشه Resources

پوشه Resources در Filament شامل کلاس‌هایی است که مسئول معرفی مدل‌ها و منابع مختلف به فیلمنت هستند. هر کلاسی در این پوشه یک منبع خاص را نشان می‌دهد که می‌تواند شامل جداول، فرم‌ها و عملیات CRUD (ایجاد، خواندن، ویرایش، حذف) باشد.

برای هر مدل که می‌خواهید در پنل فیلمنت مدیریت کنید، باید یک Resource بسازید. این کلاس‌ها می‌توانند شامل تنظیمات خاصی باشند که نحوه نمایش داده‌ها و فیلترها، صفحات، ویرایش‌ها و اعمال دیگر را تنظیم می‌کنند.

مثال:

// app/Filament/Resources/ProductResource.php

namespace App\Filament\Resources;

use Filament\Resources\Resource;
use App\Models\Product;

class ProductResource extends Resource
{
    public static $model = Product::class;
}

پوشه Pages

در فریم‌ورک Filament، Pages به شما این امکان را می‌دهند که صفحات مدیریتی را پیاده‌سازی کنید. هر صفحه یک کلاس اختصاصی است که می‌تواند شامل محتوای داینامیک باشد. در این صفحات می‌توانید جداول، فرم‌ها، و ابزارک‌ها را به نمایش بگذارید. هر صفحه معمولا به یک URL خاص از پنل فیلمنت متصل می‌شود.

مثال:

// app/Filament/Pages/Dashboard.php

namespace App\Filament\Pages;

use Filament\Pages\Page;

class Dashboard extends Page
{
    protected static ?string $title = 'داشبورد';
}

این کلاس یک صفحه داشبورد ساده را نمایش می‌دهد که به‌طور معمول برای دسترسی سریع به اطلاعات مهم مدیریتی استفاده می‌شود.

ساختار پروژه در Filament به شدت با ساختار Laravel هماهنگ است و بسیاری از اصول و مسیرها مشابه با لاراول هستند. با این حال، فیلمنت پوشه‌ها و فایل‌های خاص خود را برای مدیریت بهتر داشبوردها، منابع و صفحات مدیریتی ارائه می‌دهد. این پوشه‌ها به توسعه‌دهندگان این امکان را می‌دهند که به راحتی کدهای پروژه را سازمان‌دهی کنند و توسعه برنامه‌های مدیریتی را ساده‌تر انجام دهند.

مفهوم پوشه‌بندی و فایل‌های اصلی در فیلمنت به شما کمک می‌کند تا پروژه‌ها را به صورت منطقی و قابل نگهداری ساختاربندی کرده و روند توسعه را بهینه کنید.

نحوه اجرای درخواست‌ها در Filament

در فریم‌ورک Filament، مدیریت درخواست‌ها و رویدادها یکی از جنبه‌های کلیدی در توسعه برنامه‌های مدیریتی و داشبوردها است. درخواست‌ها و رویدادها در فیلمنت به طور معمول از طریق Livewire یا Controllers مدیریت می‌شوند، که هرکدام ویژگی‌های خاص خود را دارند و بسته به نیاز، می‌توان از آن‌ها به‌طور همزمان یا مستقل استفاده کرد. در این بخش، به نحوه‌ی مدیریت درخواست‌ها و رویدادها در فیلمنت خواهیم پرداخت و چگونگی استفاده از هرکدام را بررسی می‌کنیم.

 مدیریت رویدادها و درخواست‌ها با Livewire

Livewire یکی از اجزای اساسی در فریم‌ورک Filament است که به شما اجازه می‌دهد درخواست‌ها و رویدادهای تعاملی را به صورت داینامیک و بدون بارگذاری مجدد صفحه مدیریت کنید. Livewire یک کتابخانه مبتنی بر PHP است که به طور خودکار با جاوااسکریپت ارتباط برقرار کرده و امکان ارسال درخواست‌های AJAX به سرور را فراهم می‌آورد.

درخواست‌ها و رویدادها با Livewire

یکی از ویژگی‌های برجسته‌ی Livewire، ارسال درخواست‌های AJAX است که به شما این امکان را می‌دهد که بدون بارگذاری مجدد صفحه، داده‌ها را به سرور ارسال کرده و پاسخ دریافت کنید. این امر در پنل‌های مدیریتی و داشبوردها بسیار مفید است، زیرا باعث می‌شود تجربه کاربری بدون وقفه و روان باشد.

مثال کاربردی:
فرض کنید یک فرم ساده برای اضافه کردن محصول جدید دارید. هنگام ارسال فرم، اطلاعات به سرور ارسال می‌شود و بدون نیاز به بارگذاری مجدد صفحه، پاسخ از سرور دریافت می‌شود و صفحه به‌روز می‌شود. این کار از طریق Livewire به‌راحتی انجام می‌شود.

کد نمونه برای ارسال درخواست با Livewire:

// app/Http/Livewire/AddProductForm.php

namespace App\Http\Livewire;

use Livewire\Component;
use App\Models\Product;

class AddProductForm extends Component
{
    public $name;
    public $price;

    public function submit()
    {
        // ذخیره اطلاعات محصول جدید
        Product::create([
            'name' => $this->name,
            'price' => $this->price,
        ]);

        // پاک‌سازی فرم
        $this->reset();

        // ارسال پیام موفقیت به کاربر
        session()->flash('message', 'محصول جدید با موفقیت اضافه شد!');
    }

    public function render()
    {
        return view('livewire.add-product-form');
    }
}

در این مثال، وقتی کاربر فرم را ارسال می‌کند، داده‌ها بدون نیاز به بارگذاری مجدد صفحه به سرور ارسال می‌شود و بعد از ذخیره محصول جدید، فرم به‌روز می‌شود و پیام موفقیت نمایش داده می‌شود.

رویدادهای Livewire

در Livewire، شما می‌توانید از رویدادها برای مدیریت تعاملات مختلف استفاده کنید. برای مثال، اگر بخواهید وقتی که یک فیلد فرم تغییر می‌کند، به طور خودکار داده‌ها را اعتبارسنجی کنید یا عملیات خاصی انجام دهید، می‌توانید از رویدادها استفاده کنید.

مثال:

// app/Http/Livewire/AddProductForm.php

public function updated($propertyName)
{
    // زمانی که هر فیلدی از فرم تغییر کند
    $this->validateOnly($propertyName, [
        'name' => 'required|min:3',
        'price' => 'required|numeric',
    ]);
}

در این مثال، هر بار که یک فیلد در فرم تغییر کند، فیلتر اعتبارسنجی به طور خودکار اعمال می‌شود و از ارسال داده‌های نادرست جلوگیری می‌شود.

مزایای استفاده از Livewire در Filament

بدون بارگذاری مجدد صفحه: Livewire به شما این امکان را می‌دهد که تعاملات داینامیک و تعاملات فرم‌ها را بدون نیاز به بارگذاری مجدد صفحه انجام دهید.
آسان برای استفاده: شما می‌توانید با استفاده از کلاس‌های Livewire، عملیات‌های پیچیده‌ای مانند اعتبارسنجی، ارسال داده‌ها به سرور و مدیریت وضعیت‌ها را به راحتی پیاده‌سازی کنید.
یکپارچگی کامل با لاراول: چون Livewire با لاراول یکپارچه است، شما می‌توانید از تمامی ویژگی‌های لاراول مانند مدل‌ها، روابط، و اعتبارسنجی‌ها در داخل Livewire استفاده کنید

مدیریت درخواست‌ها و رویدادها با Controllers

اگر نیاز به منطق پیچیده‌تر یا کنترل دقیق‌تری روی پردازش درخواست‌ها دارید، استفاده از Controllers در Filament می‌تواند بسیار مفید باشد. در فریم‌ورک Filament، Controllers به شما این امکان را می‌دهند که درخواست‌ها را به دقت پردازش کنید، منطق کسب‌وکار را پیاده‌سازی کنید و پاسخ‌های مناسب را به کاربر ارسال نمایید.

 استفاده از Controllers در Filament

Controllers به طور معمول برای پردازش درخواست‌های پیچیده و مدیریت تعاملات بین نمای کاربر و داده‌ها استفاده می‌شوند. در فیلمنت، می‌توانید از کنترلرها برای مدیریت درخواست‌ها و پاسخ‌ها در مسیرهای خاص پنل مدیریتی استفاده کنید.

مثال استفاده از کنترلر در Filament:

// app/Http/Controllers/Admin/ProductController.php

namespace App\Http\Controllers\Admin;

use App\Models\Product;
use Illuminate\Http\Request;

class ProductController extends Controller
{
    public function create()
    {
        // نمایش فرم ایجاد محصول جدید
        return view('admin.products.create');
    }

    public function store(Request $request)
    {
        // پردازش فرم و ذخیره محصول جدید در دیتابیس
        $request->validate([
            'name' => 'required|min:3',
            'price' => 'required|numeric',
        ]);

        Product::create($request->all());

        return redirect()->route('admin.products.index')->with('success', 'محصول جدید با موفقیت اضافه شد!');
    }
}

در این مثال، کنترلر ProductController مسئول پردازش درخواست‌های مرتبط با ایجاد و ذخیره محصولات جدید است. در اینجا، منطق اعتبارسنجی ورودی‌ها، ذخیره داده‌ها در دیتابیس و ارجاع به صفحه دیگری بعد از انجام عمل پردازش انجام شده است.

مزایای استفاده از Controllers در Filament

منطق پیچیده‌تر: در صورتی که بخواهید منطق پیچیده‌ای برای پردازش درخواست‌ها داشته باشید، می‌توانید از کنترلرها برای این کار استفاده کنید.
کنترل دقیق‌تر: استفاده از کنترلرها به شما کنترل کامل‌تری روی مسیرها، اعتبارسنجی‌ها و پردازش‌های پیچیده‌تر می‌دهد.
انعطاف‌پذیری بالا: اگر نیاز به مدیریت درخواست‌ها از طریق API یا مسیرهای خاص دارید، کنترلرها بهترین انتخاب خواهند بود.

ترکیب Livewire و Controllers

در برخی از سناریوها، ممکن است بخواهید از Livewire و Controllers به صورت همزمان استفاده کنید. به طور مثال، شما می‌توانید درخواست‌های ساده‌تر را با استفاده از Livewire مدیریت کنید (مثل فرم‌های AJAX)، در حالی که از Controllers برای پردازش منطق پیچیده‌تر و عملیات‌هایی مانند آپلود فایل‌ها یا ارسال ایمیل‌ها استفاده کنید.

مثال:

// app/Http/Livewire/ProductForm.php

namespace App\Http\Livewire;

use Livewire\Component;
use App\Models\Product;

class ProductForm extends Component
{
    public $name;
    public $price;

    public function submit()
    {
        // ارسال داده‌ها به کنترلر برای پردازش بیشتر
        $this->emitTo('product-controller', 'store', $this->name, $this->price);
    }

    public function render()
    {
        return view('livewire.product-form');
    }
}

در این مثال، داده‌ها از طریق Livewire ارسال شده و سپس به کنترلر برای پردازش نهایی ارجاع داده می‌شوند.

در فریم‌ورک Filament، مدیریت درخواست‌ها و رویدادها به وسیله Livewire و Controllers امکان‌پذیر است. هرکدام از این روش‌ها کاربردهای خاص خود را دارند و بسته به نیاز پروژه می‌توانند به تنهایی یا به صورت ترکیبی استفاده شوند. Livewire به دلیل قابلیت ارسال درخواست‌های AJAX و بدون نیاز به بارگذاری مجدد صفحه، تجربه کاربری روانی را فراهم می‌آورد، در حالی که Controllers به شما این امکان را می‌دهند که منطق پیچیده‌تر را پیاده‌سازی کنید و پردازش‌های دقیق‌تری را انجام دهید.

نتیجه‌گیری

در این مقاله، به طور جامع با مفاهیم اصلی در Filament آشنا شدیم و نحوه ساختار پروژه، معماری، و مدیریت درخواست‌ها و رویدادها را بررسی کردیم. Filament به عنوان یک فریم‌ورک قدرتمند برای ساخت پنل‌های مدیریتی و داشبوردها، امکانات گسترده‌ای مانند استفاده از Livewire برای تعاملات داینامیک و Controllers برای مدیریت درخواست‌های پیچیده را ارائه می‌دهد. استفاده از معماری MVC در فیلمنت، از جمله مدل‌ها، نماها و کنترلرها، به شما این امکان را می‌دهد که کد تمیز، قابل نگهداری و مقیاس‌پذیری بنویسید.

با شناخت درست از مفاهیم اصلی در Filament و نحوه کار با آن، می‌توانید تجربه کاربری بی‌نقصی را در پنل‌های مدیریتی خود ایجاد کنید و توسعه پروژه‌های پیچیده‌تر را به سادگی مدیریت کنید. بنابراین، آشنایی با فریم‌ورک فیلمنت و تسلط بر مفاهیم اصلی آن، برای هر توسعه‌دهنده‌ای که قصد ساخت داشبوردهای مدیریتی پیشرفته دارد، ضروری است.

آموزش مفاهیم اصلی در Filament

دیدگاه های شما

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *