کاربردی ترین پکیج های لاراول

اگه PHP رو سیخ کباب فرض کنیماگه لاراول رو خود کباب فرض کنیم?پس میشه گفت پکیج های لاراول هم ادویه هستن!??️اگه نزنین کباب اون طعمی که باید رو نمیده. یه کباب بدون نمک و فلفل و زردچوبه و ...اگه زیاد هم بزنین کلی طعم مختلف قاطی میشه و زیاد هم جالب نیستپکیج های لاراول هم همینهحالا من اینجا میخام بنویسم از پکیج هایی که هر بار یه پروژه لاراول جدید میسازم به پروژه ام اضافه میکنم تا طعم کد نویسی بهتر بشه ?از اون طرف یه سری کارها هم انجام میدم که اینجا بهتون میگم.مهم ترین ادویه! https://github.com/barryvdh/laravel-debugbar این ابزار یه قسمت به صفحه سایت اضافه میکنه که میتونین کار های مختلفی باهاش انجام بدین و گزارش بگیرینمیتونین لاگ ها رو داخل همون صفحه ببینین بدون اینکه نیاز باشه فایل لاگ رو باز کنینمیتونین درخواست های ایجکس رو ببینینمیتونین محتوای کوکی و سشن رو ببیینینو قابلیتی که من ازش خیلی استفاده میکنم میتونین کوئری هایی که در یه صفحه اجرا میشه رو ببینین و بررسی کنین چند تاشون duplicateیا تکراری هست و با روش هایی مثل Eager loadیا کش کردن بهینه تر کنینبرای شروع این کامند رو میزنمcomposer require barryvdh/laravel-debugbar --devبعد هم این کامند رو برای ایجاد فایل کانفیگشphp artisan vendor:publish --provider=&quotBarryvdh\Debugbar\ServiceProvider&quotادویه دوم برای IDEهر جایی که کد میزنین اگه قابلیت autocompleteداشته باشه اونقدی باهوش نیست که بتونه همه چیز رو کشف کنه. https://github.com/barryvdh/laravel-ide-helper این پکیج تا حد زیاد قابلیت های لاراول رو به autocompleteمحیطی که توش کد میزنین معرفی میکنه.یه نمونه قبل نصب:همون بعد نصب:برای نصب اول کامند زیر رو میزنمcomposer require barryvdh/laravel-ide-helper --devبعد این کامند رو برای ایجاد فایل کانفیگphp artisan vendor:publish --provider=&quotBarryvdh\LaravelIdeHelper\IdeHelperServiceProvider&quot --tag=configفرآیند نصب تموم شده حالا میتونین از کامند های این پکیج برای ساخت فایل های اضافه جهت شناسوندن به autocompleteاستفاده کنین ولی کی حال داره بعد هر بار تغییر این حرکت رو بزنهمن یه برنامه نویس تنبلم و تنبلا همیشه دنبال راحت ترین راه ها میگردن.من این سه خط رو به فایلcomposer.jsonاضافه میکنم که با هر بار dump autoloadاین فایل ها از اول ساخته بشن.این شامل اضافه کردن پکیج های جدید به لاراول هم میشهتو قسمتscriptsاین خط رو&quotpost-autoload-dump&quot: [ &quotIlluminate\\Foundation\\ComposerScripts::postAutoloadDump&quot, &quot@php artisan package:discover --ansi&quot ],سه خط به آرایه اش اضافه میکنم&quotpost-autoload-dump&quot: [ &quotIlluminate\\Foundation\\ComposerScripts::postAutoloadDump&quot, &quot@php artisan package:discover --ansi&quot, &quot@php artisan ide-helper:generate&quot, &quot@php artisan ide-helper:meta&quot, &quot@php artisan ide-helper:models --nowrite&quot ],در آخر اگه شما یه برنامه نویس حرفه ای باشین حتما از یه نرم افزار کنترل نسخه مثل گیت استفاده میکنین لازمه که فایل های 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ادویه با طعم سئو https://github.com/cviebrock/eloquent-sluggable این پکیج کمک میکنه تا آدرس های داینامیک و مناسب برای گوگل بسازین مثلا این لینک ها رو ببینینtest.com/post/welcome-to-posttest.com/test?id=4test.com/test/4من که از سئو سر در نمیارم ولی سئو کارا میگن گوگل با اون اولی خیلی بیشتر حال میکنه.برای شروع این کامند رو میزنم.composer require cviebrock/eloquent-sluggableبرای ساخت فایل کانفیگ هم این دستور رو میزنم.php artisan vendor:publish --provider=&quotCviebrock\EloquentSluggable\ServiceProvider&quotحالا هر موقع برای هر کدوم از مدل هام آدرس اختصاصی نیاز داشتم حرکت های زیر رو انجام میدم.اول فیلد 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ادویه تصاویر https://github.com/Intervention/image تقریبا تو تمام پروژه ها با عکس ها سر و کار دارم و تو اکثرشون نیاز میشه تا چند تایی حرکت روشون بزنم که مثلا سایزشون کوچیک بشن, واتر مارک بخورن و داستانای دیگه. این بهترین پکیجه به نظرم و ثابت شده س.بیشتر استفاده من از این پکیج ساخت عکس های کوچیک شده از هر عکس هست. روش من برای این کار این هست.اول کامند زیر رو میزنم تا پکیج نصب بشه.composer require intervention/imageبعد با کامند زیر فایل کانفیگش رو میسازم.php artisan vendor:publish --provider=&quotIntervention\Image\ImageServiceProvider&quotحالا برای اینکه بتونم از سایز کوچیک شده عکس ها استفاده کنم این حرکت رو میزنم.من معمولا فایل های آپلود شده رو توی یه فولدر uploads داخل فولدر public لاراول میسازم البته میدونم درست ترش اینه که توی storage بسازم و لینک کنم اما خب اکثر سایتایی که ما میزنیم روی هاست آپلود میشه و روی اکثر هاست ها قابلیت لینک فراهم نیست.برای ساخت نسخه کوچیک شده به یه مسیر مشخص تو لاراول ریکوئست میره و اونجا عکس توسط این پکیج کوچیک میشه و نشون داده میشه. برای اینکه سرعت بالا بره من عکس رو کش میکنم و برای اینکار دقیقا محل ذخیره رو جوری مینویسم که انگار همون آدرسیه که تو لاراول نوشتم و وظیفه تبدیل عکس رو به عهده داشت. به این شکل فقط تو اولین ریکوئست فایل کوچیک میشه و از ریکوئست دوم به بعد خود اون فایله لود میشه.اول روت مورد نظر رو تعریف میکنم.Route::get(&quot/uploads/resized-images/{size}/{image_path}&quot, &quotImageController@resizedImage&quot)->name(&quotresized-image&quot)->where(&quotimage_path&quot, &quot.+&quot);بعد کنترلر رو به این شکل مینویسم. https://gist.github.com/amir9480/774ca02826324c23135152fbbe93d04d حالا برای استفاده راحت تر کافیه یه میوتیتور دیگه توی مدلم بنویسم.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داشت و اوایل دستی میزدم. اما وقتی با این پکیج آشنا شدم دستی نوشتن بردکرامب کاملا از سرم بیرون رفت دیگه هم برنگشت. https://github.com/davejamesmiller/laravel-breadcrumbs ادویه برای تاریخ شمسیما چه خواسته و چه ناخواسته تو ایران به دنیا اومدیم و اگه برای ایرانی سایت بزنیم احتمالا یه جایی نیاز میشه که با تاریخ شمسی هم سر و کله بزنیم. برای تاریخ شمسی خودم از این پکیج استفاده میکنم و به نظر شخصی خودم نسبت به پکیج های مشابه ش خیلی تمیز تر نوشته شده. https://github.com/hekmatinasser/verta/ ادویه ای برای هاست های اشتراکی و مشتریان خسیس https://github.com/recca0120/laravel-terminal اگه شما هم نیاز دارین که سایتی که ساختین رو روی هاست اشتراکی آپلود کنین پس برای زدن دستورات آرتیسان این پکیج لازمتون میشه حسابی.برای شروع این کامند رو میزنم.composer require recca0120/terminalبرای ساخت فایل کانفیگ و ویو و ... این کامند رو میزنم.php artisan vendor:publish --provider=&quotRecca0120\Terminal\TerminalServiceProvider&quotبعد این قسمت فایل کانفیگش رو از'enabled' => env('APP_DEBUG'),تغییر میدم به'enabled' => true,و مهمترین و حیاتی ترین قسمت کانفیگ این پکیج این قسمته. احتمالا شما هم یه میدل ویر دارین که فقط به ادمین ها اجازه دسترسی به قسمت هایی از سایت رو میده و بقیه بهش اجازه دسترسی ندارن.اگه چنین میدل ویری دارین که هیچ اگه ندارین اول بسازین و بعد اونو به این قسمت کانفیگ اضافه ش کنین.'middleware' => ['web'],مثلا'middleware' => ['web', 'auth', 'can:access_admin_panel'],ادویه مخصوص سر آشپزیه سری ادویه ها بود مثل ادویه های پرداخت و وصل شدن به بانک یا ورود با گوگل و این چیزا که ننوشتم ازشوناما علاوه بر اونا یه سری جاها هست که باید یه جعبه داشته باشین توش ادویه های مخصوص به خودتون باشه و ازش استفاده کنین. یه سری چیزا که بین پروژه ها مشترکه و مخصوص خودتونه و میدونین بهش نیاز دارین. پس چند بار ننویسینش و قاعده DRY رو رعایت کنین و یه پکیج مخصوص خودتون بسازین. اگه دوست ندارین در دسترس همه باشه اصلا اشکالی نداره با کمک قابلیت Repositoriesکومپزر براحتی فقط خودتون و هم تیمیاتون ازش استفاده کنین. اگه هم نه عمومی منتشرش کنین شاید یکی از این ادویه مخصوص سرآشپزتون خوشش اومد و به پروژه خودش اضافه کرد.تبلیغات!ادویه مخصوص سرآشپز من اینه. شاید بزنه پروژتون رو حتی بد مزه کنه اما یه نگاهی بهش بندازین.من کاربری های عمومی رو توی این پکیج برای خودم و هم تیمیام فراهم میکنم. https://github.com/sanjabteam/baloot بعد یه قسمت دیگه هم که بین پروژه ها مشترکه پنل ادمین هست که اون رو هم به شکل یه پکیج در آوردم و سرعت کارمون رو خیلی بهبود میده https://github.com/sanjabteam/sanjab پیشنهاد نمیکنم از این پکیج ها استفاده کنین ادویه آنچنان خفنی نیست اما به شدت پیشنهاد میکنم که پکیجی بسازین که کاراتون رو راحت کنه. اگه این ابزار راحت کننده رو با ما به اشتراک بذارین که چه بهتر.زیر همین پست اگه ادویه خوبی برای لاراول میشناسین بهم معرفی کنین بزنم به پروژه هام ببینم چه مزه ای میشن ?.سایر نوشت هام: https://virgool.io/laravel-community/%D8%B3%D8%A7%D8%AE%D8%AA-%D9%BE%D9%86%D9%84-%D8%A7%D8%AF%D9%85%DB%8C%D9%86-%D8%A8%D8%A7-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-%D8%A8%D9%87-%D8%B3%D8%B1%DB%8C%D8%B9-%D8%AA%D8%B1%DB%8C%D9%86-%D8%B1%D9%88%D8%B4-%D9%85%D9%85%DA%A9%D9%86-iaycwl52ddwq https://virgool.io/laravel-community/%D9%88%D8%B5%DB%8C%D8%AA-%D9%86%D8%A7%D9%85%D9%87-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-dlyu27r2ijld https://virgool.io/laravel-community/%D8%A7%D9%81%D8%B2%D9%88%D9%86%D9%87-%D9%85%D9%86-%D8%A8%D8%B1%D8%A7%DB%8C-vscode-%D9%88-%D9%84%D8%A7%D8%B1%D8%A7%D9%88%D9%84-mw9bcpvidbrd