ما از پنل ادمین Voyager برای ویرایش تنظیمات و مدیریت مدلها استفاده میکردیم، ولی Voyager یک ایراد بزرگ داشت: اینکه بیشتر تنظیماتش از طریق پنل و در دیتابیس انجام میشد. مشکل قضیه این است که بروز نگه داشتن دیتابیس روی سیستمهای مختلف (سرور اصلی، سرور staging، کامپیوتر لوکال و غیره) کار سخت و بیخودی است.
مثلاً ما یک مدل فروشگاه داریم، وقتی کاربر ادمین درحال ویرایش یک فروشگاه است میتواند فیلدهای «نام فروشگاه»، «کاربر» و «پوسته» را ویرایش کند. اما وقتی درحال مشاهدهی لیست فروشگاههاست علاوه بر فیلدهای قبلی میتواند «تاریخ ایجاد فروشگاه» و «لوگو» را هم ببیند. خب، همهی اینها توسط وویجر و در دیتابیس ذخیره شده بود. حالا اگر من (یک دولوپر) میخواستم یک فیلد در صفحهی ویرایشِ فروشگاه اضافه کنم، مجبور بودم یک seed بنویسم تا به جدولِ توی دیتابیس یک ردیف جدید اضافه کنم و به همه بگویم که حتما دستور seed کردن دیتابیس را اجرا کنند. کار سخت و بیخود!
هم به دلیل بالا و هم به این دلیل که توی شرکت همه کموبیش از آن سکّانِ چرخانِ کشتی که لوگوی وویجر است بدمان میآمد، تصمیم گرفتیم از یک پنل ادمین دیگر استفاده کنیم. تقریباً هر پنل ادمینی را که برای لاراول بود امتحان و بررسی کردیم و در نهایت به Nova رسیدیم. بهترین چیزی که میشد پیدا کرد.
در نووا برای اینکه یک پنل ادمین قوی و باحال داشته باشید تقریباً هیچ کاری لازم نیست بکنید. تمام کاری که باید بکنید این است:
1 |
php artisan nova:resource User --model=App\\User |
و بعد در فایلی که نووا برایتان میسازد، فیلدهایی را که میخواهید اضافه میکنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/** * Get the fields displayed by the resource. * * @param \Illuminate\Http\Request $request * @return array */ public function fields(Request $request) { return [ ID::make()- >sortable(), Text::make(‘Email’)- >sortable(), ]; } |
با همینقدر کد، یک پنل ادمین دارید، با لیستی از کاربران، با قابلیت مشاهده، ویرایش، حذف، و جستجوی قوی. در لیست کاربران میتوانید آیدی آنها و ایمیلشان را ببینید. در صفحه ویرایش، به صورت خودکار فیلد ID حذف میشود. میتوانید با متدهایی مثل onlyOnIndex یا onlyOnForms تعیین کنید که میخواهید فیلد کجا نمایش داده شود و کجا پنهان شود. پیشنهاد میکنم مستندات نووا را بخوانید تا با قابلیتهای دیگر آن هم آشنا شوید.
نووا مشکلی را که اول به آن اشاره کردم حل کرد. من میتوانم در کدهای برنامه تعیین کنم که ادمین چه چیزهایی را ببیند و قابلیت ویرایش چه چیزهایی را داشته باشد. من کدهای لازم را در گیت میگذارم و برنامهنویس بعدی (یا سرور اصلی و سرور تست) تنها کاری که لازم است بکنند pull کردن کدها است. هیچ کار اضافهای لازم نیست.
نووا به راحتی ترجمه میشود (به راحتی خود لاراول) و از آنجایی که از Vue.js برای فرانتاند استفاده میکند به راحتی میتوان آن را راستچین کرد. من تاریخها را هم به تاریخ شمسی تبدیل کردم که کار سختی نبود، اما چون بهجای کتابخانهی Carbon از Chronos برای کار با تاریخ استفاده میکند کمی طول کشید تا ببینم کرونوس چطوری کار میکند.
(اطلاعات بامزه: کرونوس یکجورهایی خدای زمان در اسطورههای یونان باستان است.)
ما از نووا استفاده میکنیم تا آمارهای مختلف مربوط به سایت را نمایش بدهیم، تنظیمات سیستم را تغییر دهیم (مثل متن پیامکهایی که سیستم میفرستد)، مدلها و منابع سیستم را ویرایش و مدیریت کنیم و وقتی کسی زنگ میزند و به راهنمایی نیاز دارد، در سریعترین زمان ممکن مشکلش را پیدا و رفعورجوع کنیم.
نوشتن نظر