توسعه پنل مدیریت با laravel و پکیج Ariel

مدیریت crud ساده در لاراولسلام ! امروز یه پکیج رو بهتون معرفی میکنم که با اون میتونید بدون استفاده از کد نویسی زیاد و در سریع ترین زمان جداول دیتابیس خودتون رو به صورت کامل مدیریت کنیدبه طور مثال فرض کنید ما یک جدول به نام posts داریم خب حالا برای اینکه عملیات های افزودن و ویرایش و حذف رو توی لاراول انجام بدیم مسیر سختی رو پیش رو داریمدر ساده ترین حالت باید resource route تعریف کنیمRoute::resource('/post', 'PostController'); و توی کنترلر عملیات های هرکدوم از متد ها رو کد نویسی کنیم <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class PostController extends Controller { public function index(){} public function create(){} public function store(Request $request){} public function show($id){} public function edit($id){} public function update(Request $request, $id){} public function destroy($id){} } و حداقل یه view جدولی برای نمایش لیست post ها و یه view برای ویرایش و ساخت هر post اضافه کنیم.اینجا دقیقا جایی هاست که Ariel به کمک ما میاد و با یه تنظیم ساده به کل این قابلیت ها دسترسی پیدا میکنیمکافیه با composer پکیج رو نصب کنید :composer require mmeshkatian/arielدر فایل config/app.php در آرایه providers این رو اضافه کنید :Mmeshkatian\Ariel\ArielServiceProvider::classو در آرایه aliases این رو اضافه کنید : 'Ariel' => Mmeshkatian\Ariel\Facade::class,و در مرحله آخر دستور vendor:publish برای کپی کردن view ها و ..php artisan vendor:publish --provider="Mmeshkatian\Ariel\ArielServiceProvider"حالا Ariel آماده به کار هست کافیه یه مدل و کنترلر جدید بسازیم :php artisan make:model Post php artisan make:controller PostControllerکنترلر خودمون (PostController) رو باز میکنیم و تغییرات زیر رو انجام میدیم :<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Mmeshkatian\Ariel\BaseController; class PostController extends BaseControllerکلاس BaseController رو از Mmeshkatian\Ariel\BaseController به فایل خودمون اضافه میکنیم (use)و PostController رو از BaseController اکستند میکنیمحالا نوبت تنظیم کنترلر هست . تنظیمات در متد configure انجام میشنpublic function configure() { }برای مشاهده کامل لیست تنظیمات میتونید به صفحه github این پکیج مراجعه کنید ولی اینجا بخشی از این تنظیمات که کارتون رو راه بندازه رو توضیح میدم بهتون.$this->modelدر این attribute مشخص میکنیم کنترلر به چه model ای متصل هست تا اطلاعات رو از اونجا بخونه$this->model = Post::class;$this->addFieldبا addfield میتونید برای بخش create و edit ورودی ها رو مشخص کنید به طور مثال ما اینجا ۳ تا ورودی داریم که اولی از نوع text معمولی هست . دومی textarea و سومی یه select هستدر ورودی اول متد نام فیلد رو وارد میکنیم که لازمه با ستون دیتابیس همخوانی داشته باشهدر ورودی دوم caption رو وارد میکنیم که به کاربر نشون داده میشهدر ورودی سوم متد های validation رو وارد میکنیم که اینجا از rules ها هم پشتیبانی میشهدر ورودی چهارم نوع فیلد مشخص میشه که به صورت default روی text هست ( حتی میتونید فیلد مختص خودتون رو اضافه کنید . برای اینکار یه فایل توی Resource/views/vendor/ariel/types اضافه کنید و از اسم اون اینجا استفاده کنید.)در ورودی پنجم مقدار اولیه فیلد مشخص میشه که به صورت پیشفرض روی اون ست میشهدر ورودی ششم اگر نوع فیلد ما به شکل انتخابی باشه (مثل select, checkbox , radio) مقادیر رو به شکل آرایه وارد میکنیم.$this->addField("title","Post Title :","required","text"); $this->addField("content","Post Content :","required","textarea"); $this->addField("status_id","Status :","required|in:1,2","select","1",["1"=>"enable","2"=>"disable"]);$this->addColumnبا addColumn مشخص میکنیم چه مقدار هایی در نمای جدولی نشون داده بشنبرای مثال زیر یه جدول خواهیم داشت با ۲ ستون اطلاعاتی با تیتر های Title و Statusو مقادیر این دوفیلد از ستون دیتابیس مشخص شده در ورودی دوم متد دریافت میشن$this->addColumn("Title","title"); $this->addColumn("Status","status_idToTEXT");در اینجا برای status از مقدار status_idToTEXT استفاده کردیم چرا ؟هر موقع در انتهای نام فیلد از عبارت ToTEXT استفاده بشه Ariel از مقادیر تعریف شده در متد addField کمک میگیره تا داده مناسبی رو نمایش بده چون ما status رو به شکل عددی وارد میکنیم و نمایش این عدد در لیست معنای جالبی نداره پس اول تبدیلش میکنیم به مقدار مورد نظر و سپس نمایشش میدیم.در اینجا اگر status_id در یکی از ردیف ها ۱ ست شده باشه در دیتابیس توی جدول ما عبارت enable رو نشون میده$this->addActionروبروی هر ردیف جدول نمایشی ممکنه بخایم action هایی رو اضافه کنیم ( مثل ویرایش یا حذف ) که این متد به ما کمک میکنهکافیه route این اکشن رو بهش بدیم و متنی قراره روبروی هر ردیف نشون بده در ورودی اول انتهای ادرس route رو مشخص میکنیم به طور مثال اینجا برای ویرایش route ما post.edit هست که فقط edit رو وارد میکنیمدر ورودی دوم عبارتی که روبروی هر فیلد نشون داده میشه رو میتونیم ویرایش کنیم ممکنه بخایم از fontawesome استفاده کنیم و یا فقط بخایم متن edit رو نشون بدیم که اینجا به هر شکلی قابل انجامهدر ورودی سوم caption مشخص میشه که کاربر با بردن موس روی عبارت میتونه اون رو مشاهده کنه$this->addAction("edit","<span>edit</span>",'Edit the Post');خب اینجا دیگه کارمون با cotroller تمومه !!میریم سراغ routes/web.php :Ariel::Resource('post', 'PostController');اینجا از facade پکیج Ariel استفاده میکنیم تا تنظیمات route رو به صورت خودکار انجام بدهپکیج Ariel از تایپ "CRUD" برای route ها استفاده میکنه که دقیقا با resource لاراول همخوانی دارهحالا همه کار انجام شده و میتونیم خروجی رو ببینیم :برای اینکار سرور لاراول رو run میکنیم :php artisan serveو آدرس http://localhost:8080/post رو باز میکنیم :به همین راحتی حالا همه کاری با post ها قابل انجامه !وقتی روی new record بزنیم : و وقتی save رو میزنیم که اطلاعات ذخیره بشن : اگر از view ها خوشتون نمیاد میتونید به راحتی اون ها رو با view های خودتون جایگزین کنیدبرای اینکار لازمه یه نگاهی به Resource/views/vendor/ariel بندازید.آدرس پیج github : https://github.com/mmeshkatian/Arielخوشحال میشم نظرات و انتقاداتتون رو بشنوم راجب این پکیج :))