Skip to content

پکیج کمکی لاراول برای ایرانیان

License

Notifications You must be signed in to change notification settings

mniknezhad/baloot

 
 

Repository files navigation

بلوط

Baloot


Latest Stable Version Total Downloads Build Status Code Style Code Style License


پکیج لاراول مخصوص توسعه دهندگان ایرانی

من همیشه یه سری کد داشتم که هر بار پروژه جدید ایجاد میکردم هر بار از اول کپی میکردم تو پروژه جدیده.بعد تصمیم گرفتم این رو به صورت یه پکیج در بیارم تا هم خودم و هم همکارام به راحتی بتونیم ازشون استفاده کنیم. حالا اگه شما هم فکر میکنین این پکیج میتونه روند توسعه نرم افزار هاتون رو سریع کنه شما هم استفاده کنین. اگه فکر میکنین چیز خاصی هست که مخصوص توسعه دهنده های ایرانی هست اما در این پکیج موجود نیست حتما یه

forkو pull request

مهمون کنین 😁.

امکانات:

  • ذخیره و بازیابی تاریخ شمسی در الوکوئنت
  • دسترسی به ای پی آی سایت آپارات مستقیما از مدل
  • میدلویر برای تعمیر حروف ک و ی عربی و اعداد فارسی و عربی
  • تابع تهیه اسلاگ فارسی
  • امکانات اضافه شده به فیکر از جمله لینک ویدیو آپارات
  • ولیدیتور شماره همراه و شماره تماس ثابت
  • دیتابیس شهر ها و استان های ایران به همراه روت بایندینگ ها
  • پیدا کردن بانک از روی شماره کارت

نصب

برای نصب شما به لاراول نسخه 6 یا بالاتر نیاز دارید. با استفاده از کومپوزر در پروژه لاراولی خود این پکیج رو نصب کنید.

composer require sanjabteam/baloot

بعد هم با این کامند فایل کانفیگ رو بسازین.

php artisan vendor:publish --provider=Baloot\\BalootServiceProvider

کانفیگ

در فایل

config/baloot.php

میتونین کانفیگ رو تغییر بدین.

geo: اگه نمیخاین از قابلیت استان و شهر استفاده کنین مقدار این قسمت رو برابر

false

قرار بدید تا جداولش ایجاد نشه.

aparat: اگه نمیخاین از قابلیت آپارات استفاده کنین مقدار این قسمت رو برابر

false

قرار بدید تا جداولش ایجاد نشه.

ذخیره و بازیابی تاریخ شمسی

این پکیج این امکان رو به شما میده تا به راحتی تاریخ های موجود در مدل لاراول رو به راحتی به کلاس ورتا تبدیل کنید. برای شروع

trait

Baloot\EloquentHelper

رو به مدلی که میخاین اضافه کنین.

use Baloot\EloquentHelper;

class User extends Model
{
    use EloquentHelper; // trait
}

بعد به راحتی میتونین به صورت شمسی به مشخصات دسترسی داشته باشین. فقط کافیه به فیلد مورد نظرتون پسوند

_fa

اضافه کنید.

$user = User::where(...)->first();
$user->created_at_fa // به صورت کلاس Hekmatinasser\Verta\Verta
$user->created_at_fa_f // 1390/1/1
$user->created_at_fa_ft // 1390/1/1 12:00
$user->created_at_fa_ftt // 1390/1/1 12:00:00
$user->updated_at_fa->format("%B %d %Y") // فروردین 01 1390

برای مدیریت بهتر میتونین به مستندات ورتا .مراجعه کنین همچنین با تنظیم کردن تاریخ هم از همین روش استفاده کنین.

$user->created_at_fa = Verta::createJalaliDate(1390, 1, 1);
dd($user->created_at); // Illuminate\Support\Carbon { date: 2011-03-21 }
$user->created_at_fa = "1392/1/1";
dd($user->created_at); // Illuminate\Support\Carbon { date: 2013-03-21 }
$user->created_at_fa = "1395/1/1 14:22:11";
dd($user->created_at); // Illuminate\Support\Carbon { date: 2016-03-20 14:22:11 }

استفاده از اتریبیوت های دلخواه

اگه میخاین یه فیلد دلخواه به جز

created_at, updated_at

داشته باشین که از همین قابلیت پشتیبانی کنه کافیه اون رو به تاریخ کست کنین.

use Baloot\EloquentHelper;

class User extends Model
{
    use EloquentHelper;

    protected $casts = [
        'birth_date' => 'date',
        // یا
        'released_at' => 'datetime'
    ];
}

و بازم هم به همون روش میتونین بهش دسترسی داشته باشین.

$user->birth_date_fa; // Hekmatinasser\Verta\Verta

مشخصات ویدیو آپارات

این پکیج این امکان رو به شما میده تا به راحتی مشخصات یه فیلم رو از ای پی آی آپارات از طریق آدرس فیلم دریافت کنین. برای شروع

trait

Baloot\EloquentHelper

رو به مدلی که میخاین اضافه کنین.

use Baloot\EloquentHelper;

class Post extends Model
{
    use EloquentHelper; // trait
}

بعد فقط کافیه که آدرس فیلم رو درون یه فیلد ذخیره کنین. بعد با پسوند

_aparat

به مشخصاتش دسترسی پیدا کنین.

$post = Post::first();
$post->video = "https://www.aparat.com/v/O4qSP";
dd($post->video_aparat); // Baloot\Models\AparatVideo
dd($post->video_aparat->title); // ایستگاه جوانمرد راستگو
dd($post->video_aparat->username); // ding.dong
dd($post->video_aparat->sender_name); //دینگ دانگ

اگه میخاین مستقیم و بدون مدل به مشخصات دسترسی داشته باشین از این تابع استفاده کنین.

aparat_info(["https://www.aparat.com/v/O4qSP"]);

مشخصات کامل: AparatVideo

نکته بسیار مهم

آپارات اگه طی یه زمان از حدی بیشتر بهش درخواست بفرسین یه ارور

429 Too Many Requests

بهتون تحویل میده و حسابی دردسر درست میکنه براتون برای همین من مشخصات فیلم ها داخل دیتابیس ذخیره میکنم بنابراین مشخصات فیلم تا زمانی که خودتون نخواید تغییری نمیکنه. یه سری چیز ها مثل تعداد بازدید و تعداد لایک خیلی سریع تغییر میکنن اما به نظرم ارزش اینو ندارن که عاقبتتون 429 بشه. برای بروز کردن مشخصات فیلم کافیه که از این روش استفاده کنین.

$post->video_aparat->visit_cnt; // 26550
$post->video_aparat->reload();
$post->video_aparat->visit_cnt; // 26812

میدلویر

یکی از مشکلاتی که تو پروژه ها سر و کله میزنم باهاشون یکی اعداد فارسی هست. مثلا طرف میاد موقع ثبت نام رمز عبورش رو با عدد فارسی میزنه بعد موقع ورود با عدد انگلیسی بعد این وسط میگه رمز عبورش اشتباهه درصورتی که اینطوری نیست. مشکل دوم اینه که مثلا ادمین یه چیزی با ک و ی فارسی وارد میکنه اما یه کاربری تو سایت کیبوردش عربی و با ك,ي عربی سرچ میکنه و این وسط موقع سرچ چیزی پیدا نمیکنه در صورتی که اینطور نیستش. برای حل این مشکل کافیه در فایل

app/Http/Kernel.php

کلاس

\Baloot\Middleware\FixRequestInputs

به آرایه

middleware

اضافه کنین

protected $middleware = [
    ...
    \Baloot\Middleware\FixRequestInputs::class,
];

به همین راحتی برای همیشه هم با مشکل اعداد فارسی و هم مشکل حروف عربی خداحافظی کنین.

ولیدیشن

iran_phone: برای وارد کردن شماره های ثابت ایرانی

iran_mobile: برای ولیدیشن شماره موبایل های ایرانی

برای استفاده:

public function test(Request $request)
{
    $request->validate([
        'test1' => 'required|iran_mobile',
        'test2' => 'required|iran_phone',
    ]);
}

این قسمت نیاز به بهبود دارد

فیکر

برای فیکر یه سری بهبود ها انجام شده برای مثال paragraph فارسی سازی شده.

CustomImage:

customImage($path, $width, $height, $prefix)

این فیکر عکس از سایت

https://picsum.photos

براتون فراهم میکنه.

$path: پوشه محل ذخیره $width: طول عکس $height: عرض عکس $prefix: به طور پیشفرض فقط نام عکس بهتون داده میشه با کمک این میتونین یه پیشوند به اسم عکس اضافه کنین

نمونه:

'image' => $faker->customImage(public_path('uploads/fake'), 640, 480, 'fake/')

همچنین اگه میخاین یه آرایه از عکس داشته باشین

$faker->customImages(public_path('uploads/fake'), 640, 480, $faker->numberBetween(1, 3), 'fake/')

چهارمین پارامتر تعداد عکس هایی که لازم دارین رو ازتون دریافت میکنه.

iranMobile:

یه شماره موبایل ایرانی براتون میسازه

$faker->iranMobile

iranPhone:

یه شماره موبایل ایرانی براتون میسازه

$faker->iranPhone

aparatVideo:

آدرس یه فیلم در آپارات به فراهم میکنه.

$faker->aparatVideo

اگه آرایه ای از فیلم ها میخاید.

$faker->aparatVideos($faker->numberBetween(1, 3))

پارامتر تعداد فیلم هایی که لازم دارین رو ازتون دریافت میکنه.

استان ها و شهرها

برای شروع در

DatabaseSeeder.php

این قسمت رو اضافه کنید.

public function run()
{
    $this->call(\Baloot\Database\CitiesTableSeeder::class); // سیدر شهر ها و استان ها
}

سپس بعد از میگریت سید رو انجام بدین.

php artisan migrate --seed

حالا جداول شما از شهر ها و استان ها پر شده برای استفاده از دو مدل پایین میتونین استفاده کنین.

مدل استان: Baloot\Models\Province

مدل شهر: Baloot\Models\City

نمونه:

use Baloot\Models\City;

City::where('name', 'آمل')->first()

روت بایندینگ

اگه میخاین از استان و شهر در آدرس ها استفاده کنین از این روش استفاده کنین.

use Baloot\Models\Province;
use Baloot\Models\City;

Route::get('test/{province}/{city}', function (Province $province, City $city) {
    abort_if($city->province_id != $province->id, 404);
    // ...
});

و سپس آدرس زیر رو باز کنید.

/test/27/1068

حالا به استان و شهر دسترسی دارین.

اگه میخاین آدرستون

seo freindly

باشه از

slug

موجود در شهر ها و استان ها استفاده کنین. این اسلاگ ها به کمک

Eloquent Sluggable

تهیه شدن. بنابراین آدرس رو به این شکل باز کنین.

/test/مازندران/آمل.

اگه فقط میخاین با آی دی باز باشه یا فقط اسلاگ و هر دو حالت رو قبول نکنه در اون صورت از این ها به جای

province, city

استفاده کنین.

city_by_id: شهر با آی دی

city_by_slug: شهر با اسلاگ

province_by_id: استان با آی دی

province_by_slug: استان با اسلاگ

استان: Province

شهر: City

اسلاگ

همونطور که میدونین در لاراول با تابع

Str::slug('test test')

میشه یه اسلاگ برای آدرس دهی درست کرد اما اگه فارسی به این تابع بدین

Str::slug('خونه ی مادربزرگه')

خروجی

"khonh-i-madrbzrgh"

میده که یه جورایی سعی کرده به فینگلیش تبدیلش کنه اما با تابع str_to_slug این پکیج به راحتی حروف فارسی رو هم مدیریت میکنه

str_to_slug('خونه ی مادربزرگه')

"خونه-ی-مادربزرگه"

استفاده با پکیج Eloquent Sluggable

کافیه در فایل

config/sluggable.php

قسمت

method

رو این شکلی بنویسین.

'method' => 'str_to_slug',

پیداکردن بانک از روی شماره کارت

برای پیدا کردن بانک از روی شماره کارت از این تابع استفاده کنین.

find_bank_by_card_number("6037697531")

خروجی:

[
    "class" => "bsi",
    "name" => "بانک صادرات ایران",
    "card_prefix" => "603769",
]

کلاس, نام کلاس بر اساس این پکیج هست.

ساخته شده با کمک

About

پکیج کمکی لاراول برای ایرانیان

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%