?Talamanca = My medicine! | https://goo.gl/ceaBN7
کاربردی ترین پکیج های لاراول
اگه PHP رو سیخ کباب فرض کنیم
اگه لاراول رو خود کباب فرض کنیم?
پس میشه گفت پکیج های لاراول هم ادویه هستن!??️
اگه نزنین کباب اون طعمی که باید رو نمیده. یه کباب بدون نمک و فلفل و زردچوبه و ...
اگه زیاد هم بزنین کلی طعم مختلف قاطی میشه و زیاد هم جالب نیست
پکیج های لاراول هم همینه
حالا من اینجا میخام بنویسم از پکیج هایی که هر بار یه پروژه لاراول جدید میسازم به پروژه ام اضافه میکنم تا طعم کد نویسی بهتر بشه ?
از اون طرف یه سری کارها هم انجام میدم که اینجا بهتون میگم.
مهم ترین ادویه!
این ابزار یه قسمت به صفحه سایت اضافه میکنه که میتونین کار های مختلفی باهاش انجام بدین و گزارش بگیرین
میتونین لاگ ها رو داخل همون صفحه ببینین بدون اینکه نیاز باشه فایل لاگ رو باز کنین
میتونین درخواست های ایجکس رو ببینین
میتونین محتوای کوکی و سشن رو ببیینین
و قابلیتی که من ازش خیلی استفاده میکنم میتونین کوئری هایی که در یه صفحه اجرا میشه رو ببینین و بررسی کنین چند تاشون
duplicate
یا تکراری هست و با روش هایی مثل
Eager load
یا کش کردن بهینه تر کنین
برای شروع این کامند رو میزنم
composer require barryvdh/laravel-debugbar --dev
بعد هم این کامند رو برای ایجاد فایل کانفیگش
php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"
ادویه دوم برای IDE
هر جایی که کد میزنین اگه قابلیت
autocomplete
داشته باشه اونقدی باهوش نیست که بتونه همه چیز رو کشف کنه.
این پکیج تا حد زیاد قابلیت های لاراول رو به
autocomplete
محیطی که توش کد میزنین معرفی میکنه.
یه نمونه قبل نصب:
همون بعد نصب:
برای نصب اول کامند زیر رو میزنم
composer require barryvdh/laravel-ide-helper --dev
بعد این کامند رو برای ایجاد فایل کانفیگ
php artisan vendor:publish --provider="Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider" --tag=config
فرآیند نصب تموم شده حالا میتونین از کامند های این پکیج برای ساخت فایل های اضافه جهت شناسوندن به
autocomplete
استفاده کنین ولی کی حال داره بعد هر بار تغییر این حرکت رو بزنه
من یه برنامه نویس تنبلم و تنبلا همیشه دنبال راحت ترین راه ها میگردن.
من این سه خط رو به فایل
composer.json
اضافه میکنم که با هر بار
dump autoload
این فایل ها از اول ساخته بشن.
این شامل اضافه کردن پکیج های جدید به لاراول هم میشه
تو قسمت
scripts
این خط رو
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
سه خط به آرایه اش اضافه میکنم
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi",
"@php artisan ide-helper:generate",
"@php artisan ide-helper:meta",
"@php artisan ide-helper:models --nowrite"
],
در آخر اگه شما یه برنامه نویس حرفه ای باشین حتما از یه نرم افزار کنترل نسخه مثل گیت استفاده میکنین لازمه که فایل های
ide helper
رو از روی ورژن کنترل بردارین وگرنه با هم تیمیاتون به کلی
conflict
الکی میخورین که حسابی دردسر میشه براتون
برای جلوگیری از این دردسر این سه خط رو به
.gitignore
اضافه میکنم.
/_ide_helper_models.php
/_ide_helper.php
/.phpstorm.meta.php
ادویه سوم.
دست گل ?عمو تیلور تو نسخه 6 لاراول
اگه از لاراول 6 به قبل استفاده میکردین حتما میدونستین به صورت پیش فرض یه سری کد ویو ( یا کد ری اکت که با کامند آرتیسن تبدیل میشد ) تو پروژه تازه ساخته شده وجود داشت و همچنین یه دستور
php artisan make:auth
هم بود که بیس کار رو برای ثبت و ورود کاربر حاضر میکرد تا کارا سری پیش بره
حالا همه ی این امکانات به یه پکیج جدا
laravel/ui
منتقل شد.
برای نصب اول این کامند رو میزنم
composer require laravel/ui --dev
بعد هم من چون از ویو استفاده میکنم از این کامند برای ساخت بیس کار استفاده میکنم.
php artisan ui vue --auth
کادر آخر هم اون کامندی که توی خروجی کامند بالا بود رو میزنم.
npm install
npm run dev
و در آخر بازم یه تعدادی فایل که باید برن تو
gitignore
به خصوص فایل های کامپایل شده توسط میکس و وب پک حسابی براتون دردسر ایجاد میکنن.
/public/css
/public/js
/public/mix-manifest.json
ادویه با طعم سئو
این پکیج کمک میکنه تا آدرس های داینامیک و مناسب برای گوگل بسازین مثلا این لینک ها رو ببینین
test.com/post/welcome-to-post
test.com/test?id=4
test.com/test/4
من که از سئو سر در نمیارم ولی سئو کارا میگن گوگل با اون اولی خیلی بیشتر حال میکنه.
برای شروع این کامند رو میزنم.
composer require cviebrock/eloquent-sluggable
برای ساخت فایل کانفیگ هم این دستور رو میزنم.
php artisan vendor:publish --provider="Cviebrock\EloquentSluggable\ServiceProvider"
حالا هر موقع برای هر کدوم از مدل هام آدرس اختصاصی نیاز داشتم حرکت های زیر رو انجام میدم.
اول فیلد slug رو به جدول اضافه میکنم.
$table->string('slug')->unique()->index();
بعد کانفیگ لازم رو برای مدل انجام میدم.
class Category extends Model
{
use Sluggable;
public function sluggable()
{
return ['slug' => ['source' => 'name']];
}
}
بعد قابلیت روت مدل بانیدینگ رو با استفاده از اسلاگ فراهم میکنم.
توی تابع boot توی فایل RouteServiceProvider برای مدل مورد نظرم قابلیت بایند کردن رو فراهم میکنم.
Route::bind('category_by_slug', function ($slug) {
return Category::where('slug', $slug)->firstOrFail();
});
روت های مورد نیازم رو تعریف میکنم و کنترلر و ویو و این داستانا.
Route::get('/دسته-بندی/{category_by_slug}', 'CategoryController')->name('category');
بعد برای راحت تر شدن دسترسی به آدرس مدل ها یه میوتیتور مینویسم تو مدلم.
public function getLinkAttribute()
{
return route('category', ['category_by_slug' => $this->slug]);
}
و خیلی راحت هر جا لازمش داشتم ازش استفاده میکنم.
$category->link
ادویه تصاویر
تقریبا تو تمام پروژه ها با عکس ها سر و کار دارم و تو اکثرشون نیاز میشه تا چند تایی حرکت روشون بزنم که مثلا سایزشون کوچیک بشن, واتر مارک بخورن و داستانای دیگه. این بهترین پکیجه به نظرم و ثابت شده س.
بیشتر استفاده من از این پکیج ساخت عکس های کوچیک شده از هر عکس هست. روش من برای این کار این هست.
اول کامند زیر رو میزنم تا پکیج نصب بشه.
composer require intervention/image
بعد با کامند زیر فایل کانفیگش رو میسازم.
php artisan vendor:publish --provider="Intervention\Image\ImageServiceProvider"
حالا برای اینکه بتونم از سایز کوچیک شده عکس ها استفاده کنم این حرکت رو میزنم.
من معمولا فایل های آپلود شده رو توی یه فولدر uploads داخل فولدر public لاراول میسازم البته میدونم درست ترش اینه که توی storage بسازم و لینک کنم اما خب اکثر سایتایی که ما میزنیم روی هاست آپلود میشه و روی اکثر هاست ها قابلیت لینک فراهم نیست.
برای ساخت نسخه کوچیک شده به یه مسیر مشخص تو لاراول ریکوئست میره و اونجا عکس توسط این پکیج کوچیک میشه و نشون داده میشه. برای اینکه سرعت بالا بره من عکس رو کش میکنم و برای اینکار دقیقا محل ذخیره رو جوری مینویسم که انگار همون آدرسیه که تو لاراول نوشتم و وظیفه تبدیل عکس رو به عهده داشت. به این شکل فقط تو اولین ریکوئست فایل کوچیک میشه و از ریکوئست دوم به بعد خود اون فایله لود میشه.
اول روت مورد نظر رو تعریف میکنم.
Route::get("/uploads/resized-images/{size}/{image_path}", "ImageController@resizedImage")->name("resized-image")->where("image_path", ".+");
بعد کنترلر رو به این شکل مینویسم.
حالا برای استفاده راحت تر کافیه یه میوتیتور دیگه توی مدلم بنویسم.
public function getImageLinkAttribute()
{
return Storage::disk('public')->url($this->image);
}
public function getImageThumbLinkAttribute()
{
return route('resized-image', ['image_path' => $this->image, 'size' => 'small']);
}
فیلد image همون مسیر ذخیره عکس تو پوشه آپلود ها هستش.
به همین راحتی به لینک نسخه اصلی عکس و لینک نسخه کوچیک شده دسترسی دارم.
{{ $post->image_link }}
{{ $post->image_thumb_link }}
ادویه ای برای دست گل طراحا برای طراحی مدرن
Breadcrumbs!
میتونم بگم اکثر سایت هایی که تا حالا زدم چه با قالب حاضر و آماده چه با قالب اختصاصی داخلش
breadcrumb
داشت و اوایل دستی میزدم. اما وقتی با این پکیج آشنا شدم دستی نوشتن بردکرامب کاملا از سرم بیرون رفت دیگه هم برنگشت.
ادویه برای تاریخ شمسی
ما چه خواسته و چه ناخواسته تو ایران به دنیا اومدیم و اگه برای ایرانی سایت بزنیم احتمالا یه جایی نیاز میشه که با تاریخ شمسی هم سر و کله بزنیم. برای تاریخ شمسی خودم از این پکیج استفاده میکنم و به نظر شخصی خودم نسبت به پکیج های مشابه ش خیلی تمیز تر نوشته شده.
ادویه ای برای هاست های اشتراکی و مشتریان خسیس
اگه شما هم نیاز دارین که سایتی که ساختین رو روی هاست اشتراکی آپلود کنین پس برای زدن دستورات آرتیسان این پکیج لازمتون میشه حسابی.
برای شروع این کامند رو میزنم.
composer require recca0120/terminal
برای ساخت فایل کانفیگ و ویو و ... این کامند رو میزنم.
php artisan vendor:publish --provider="Recca0120\Terminal\TerminalServiceProvider"
بعد این قسمت فایل کانفیگش رو از
'enabled' => env('APP_DEBUG'),
تغییر میدم به
'enabled' => true,
و مهمترین و حیاتی ترین قسمت کانفیگ این پکیج این قسمته. احتمالا شما هم یه میدل ویر دارین که فقط به ادمین ها اجازه دسترسی به قسمت هایی از سایت رو میده و بقیه بهش اجازه دسترسی ندارن.
اگه چنین میدل ویری دارین که هیچ اگه ندارین اول بسازین و بعد اونو به این قسمت کانفیگ اضافه ش کنین.
'middleware' => ['web'],
مثلا
'middleware' => ['web', 'auth', 'can:access_admin_panel'],
ادویه مخصوص سر آشپز
یه سری ادویه ها بود مثل ادویه های پرداخت و وصل شدن به بانک یا ورود با گوگل و این چیزا که ننوشتم ازشون
اما علاوه بر اونا یه سری جاها هست که باید یه جعبه داشته باشین توش ادویه های مخصوص به خودتون باشه و ازش استفاده کنین. یه سری چیزا که بین پروژه ها مشترکه و مخصوص خودتونه و میدونین بهش نیاز دارین. پس چند بار ننویسینش و قاعده DRY رو رعایت کنین و یه پکیج مخصوص خودتون بسازین. اگه دوست ندارین در دسترس همه باشه اصلا اشکالی نداره با کمک قابلیت
Repositories
کومپزر براحتی فقط خودتون و هم تیمیاتون ازش استفاده کنین. اگه هم نه عمومی منتشرش کنین شاید یکی از این ادویه مخصوص سرآشپزتون خوشش اومد و به پروژه خودش اضافه کرد.
تبلیغات!
ادویه مخصوص سرآشپز من اینه. شاید بزنه پروژتون رو حتی بد مزه کنه اما یه نگاهی بهش بندازین.
من کاربری های عمومی رو توی این پکیج برای خودم و هم تیمیام فراهم میکنم.
بعد یه قسمت دیگه هم که بین پروژه ها مشترکه پنل ادمین هست که اون رو هم به شکل یه پکیج در آوردم و سرعت کارمون رو خیلی بهبود میده
پیشنهاد نمیکنم از این پکیج ها استفاده کنین ادویه آنچنان خفنی نیست
اما به شدت پیشنهاد میکنم که پکیجی بسازین که کاراتون رو راحت کنه.
اگه این ابزار راحت کننده رو با ما به اشتراک بذارین که چه بهتر.
زیر همین پست اگه ادویه خوبی برای لاراول میشناسین بهم معرفی کنین بزنم به پروژه هام ببینم چه مزه ای میشن ?.
سایر نوشت هام:
مطلبی دیگر از این انتشارات
ساخت کوتاه کننده لینک با لاراول
مطلبی دیگر از این انتشارات
چگونه در لاراول «بدنویسی» کنیم؟!
مطلبی دیگر از این انتشارات
نصب لاراول روی هاست (هاست اشتراکی)