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

مدیریت crud ساده در لاراول
مدیریت 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


خوشحال میشم نظرات و انتقاداتتون رو بشنوم راجب این پکیج :))