توسعه پنل مدیریت با laravel و پکیج Ariel
سلام !
امروز یه پکیج رو بهتون معرفی میکنم که با اون میتونید بدون استفاده از کد نویسی زیاد و در سریع ترین زمان جداول دیتابیس خودتون رو به صورت کامل مدیریت کنید
به طور مثال فرض کنید ما یک جدول به نام 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
خوشحال میشم نظرات و انتقاداتتون رو بشنوم راجب این پکیج :))
مطلبی دیگر در همین موضوع
آشنایی با وب اسکرپینگ | Web Scraping
مطلبی دیگر در همین موضوع
ترفندچه: نحوه حذف رمز صفحه قفل گوشی های اندرویدی بدون از دست دادن اطلاعات
بر اساس علایق شما
من تورو انتخاب میکنم«میخوام به همه نشونت بدم!»