PHPackages                             peyman136/baloot - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. peyman136/baloot

ActiveLibrary

peyman136/baloot
================

Laravel helper package for iranians

1.3.0(4y ago)037MITPHPPHP ^7.3|^8.0

Since Oct 24Pushed 1y ago1 watchersCompare

[ Source](https://github.com/peyman136/baloot)[ Packagist](https://packagist.org/packages/peyman136/baloot)[ Docs](https://github.com/sanjabteam/baloot)[ RSS](/packages/peyman136-baloot/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (5)Versions (17)Used By (0)

بلوط
====

[](#بلوط)

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

[](#پکیج-کمکی-لاراول-برای-ایرانیان)

---

[![Latest Stable Version](https://camo.githubusercontent.com/e15d298f98ac9b1ecf8c5429fea79015326a9cbdef2c37975631c6cae796c2ca/68747470733a2f2f706f7365722e707567782e6f72672f73616e6a61627465616d2f62616c6f6f742f762f737461626c65)](https://packagist.org/packages/sanjabteam/baloot)[![Total Downloads](https://camo.githubusercontent.com/332d2b1eb49c2ade320483ec93b6fd3dca700599fdd1929ad4d8e67b0953ae43/68747470733a2f2f706f7365722e707567782e6f72672f73616e6a61627465616d2f62616c6f6f742f646f776e6c6f616473)](https://packagist.org/packages/sanjabteam/baloot)[![Build Status](https://github.com/sanjabteam/baloot/workflows/tests/badge.svg)](https://github.com/sanjabteam/baloot/actions)[![Code Style](https://camo.githubusercontent.com/b2f19fadf7beac42d779ce6c3e4693e2ccaf8f54a602dec70db6e112fa9bbdcf/68747470733a2f2f6769746875622e7374796c6563692e696f2f7265706f732f3231343139373338332f736869656c643f7374796c653d666c6174)](https://github.styleci.io/repos/214197383)[![Code Style](https://camo.githubusercontent.com/c0268b77df3bb17c4b06a846b0cf3761c475741de87cca1879e060cbf2321a3f/68747470733a2f2f636f6465636f762e696f2f67682f73616e6a61627465616d2f62616c6f6f742f6272616e63682f6d61737465722f67726170682f62616467652e7376673f73616e6974697a653d74727565)](https://codecov.io/gh/sanjabteam/baloot)[![License](https://camo.githubusercontent.com/a6776efba020b21adcb2127c30766d2bbdc8c21866961ae8c5f2c0a46bd4c37e/68747470733a2f2f706f7365722e707567782e6f72672f73616e6a61627465616d2f62616c6f6f742f6c6963656e7365)](https://packagist.org/packages/sanjabteam/baloot)

---

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

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

forkو pull request

مهمون کنین 😁.

امکانات:

- ذخیره و بازیابی تاریخ شمسی در الوکوئنت
- شرط گذاری روی کوئری با تاریخ شمسی
- میدلویر برای تعمیر حروف ک و ی عربی و اعداد فارسی و عربی
- تابع تهیه اسلاگ فارسی
- ولیدیتور شماره همراه و شماره تماس ثابت
- دیتابیس شهر ها و استان های ایران به همراه روت بایندینگ ها
- پیدا کردن بانک از روی شماره کارت

- [نصب](#%d9%86%d8%b5%d8%a8)
- [کانفیگ](#%da%a9%d8%a7%d9%86%d9%81%db%8c%da%af)
- [ذخیره و بازیابی تاریخ شمسی](#%d8%b0%d8%ae%db%8c%d8%b1%d9%87-%d9%88-%d8%a8%d8%a7%d8%b2%db%8c%d8%a7%d8%a8%db%8c-%d8%aa%d8%a7%d8%b1%db%8c%d8%ae-%d8%b4%d9%85%d8%b3%db%8c)
    - [استفاده از اتریبیوت های دلخواه](#%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-%d8%a7%d8%aa%d8%b1%db%8c%d8%a8%db%8c%d9%88%d8%aa-%d9%87%d8%a7%db%8c-%d8%af%d9%84%d8%ae%d9%88%d8%a7%d9%87)
- [کوئری بیلدر تاریخ شمسی](#%da%a9%d9%88%d8%a6%d8%b1%db%8c-%d8%a8%db%8c%d9%84%d8%af%d8%b1-%d8%aa%d8%a7%d8%b1%db%8c%d8%ae-%d8%b4%d9%85%d8%b3%db%8c)
    - [whereJalali](#wherejalali)
    - [whereDateJalali](#wheredatejalali)
    - [whereInMonthJalali](#whereinmonthjalali)
    - [whereInYearJalali](#whereinyearjalali)
- [میدلویر](#%d9%85%db%8c%d8%af%d9%84%d9%88%db%8c%d8%b1)
- [ولیدیشن](#%d9%88%d9%84%db%8c%d8%af%db%8c%d8%b4%d9%86)
- [فیکر](#%d9%81%db%8c%da%a9%d8%b1)
- [استان ها و شهرها](#%d8%a7%d8%b3%d8%aa%d8%a7%d9%86-%d9%87%d8%a7-%d9%88-%d8%b4%d9%87%d8%b1%d9%87%d8%a7)
    - [روت بایندینگ](#%d8%b1%d9%88%d8%aa-%d8%a8%d8%a7%db%8c%d9%86%d8%af%db%8c%d9%86%da%af)
- [اسلاگ](#%d8%a7%d8%b3%d9%84%d8%a7%da%af)
    - [استفاده با پکیج Eloquent Sluggable](#%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a8%d8%a7-%d9%be%da%a9%db%8c%d8%ac-eloquent-sluggable)
- [پیداکردن بانک از روی شماره کارت](#%d9%be%db%8c%d8%af%d8%a7%da%a9%d8%b1%d8%af%d9%86-%d8%a8%d8%a7%d9%86%da%a9-%d8%a7%d8%b2-%d8%b1%d9%88%db%8c-%d8%b4%d9%85%d8%a7%d8%b1%d9%87-%da%a9%d8%a7%d8%b1%d8%aa)
- [ساخته شده با کمک](#%d8%b3%d8%a7%d8%ae%d8%aa%d9%87-%d8%b4%d8%af%d9%87-%d8%a8%d8%a7-%da%a9%d9%85%da%a9)

نصب
---

[](#نصب)

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

```
composer require sanjabteam/baloot
```

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

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

کانفیگ
------

[](#کانفیگ)

در فایل

```
config/baloot.php

```

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

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

`false`

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

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

[](#ذخیره-و-بازیابی-تاریخ-شمسی)

این پکیج این امکان رو به شما میده تا به راحتی تاریخ های موجود در مدل لاراول رو به راحتی به کلاس [ورتا](https://github.com/hekmatinasser/verta) تبدیل کنید. برای شروع

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
```

برای مدیریت بهتر میتونین به مستندات [ورتا](https://github.com/hekmatinasser/verta).مراجعه کنین همچنین با تنظیم کردن تاریخ هم از همین روش استفاده کنین.

```
$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

داشته باشین که از همین قابلیت پشتیبانی کنه کافیه اون رو به تاریخ [کست](https://laravel.com/docs/6.x/eloquent-mutators#date-casting) کنین.

```
use Baloot\EloquentHelper;

class User extends Model
{
    use EloquentHelper;

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

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

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

کوئری بیلدر تاریخ شمسی
----------------------

[](#کوئری-بیلدر-تاریخ-شمسی)

این دستورات کمک میکنن بر روی ستون های از نوع date/datetime شرط با تاریخ شمسی بذارین.

### whereJalali

[](#wherejalali)

شرط با یک تاریخ و زمان به خصوص شمسی

```
User::whereJalali('created_at', '1399/01/15 14:00:00')->get();
// یا
User::whereJalali('created_at', Verta::createJalali(1399,01,15, 14, 0, 0))->get();
// شرط با عملگر
User::whereJalali('created_at', '>', '1399/01/15 14:00:00')->get();
```

### whereDateJalali

[](#wheredatejalali)

شرط با یک تاریخ به خصوص شمسی

```
User::whereDateJalali('created_at', '1399/01/15')->get();
// یا
User::whereDateJalali('created_at', Verta::createJalaliDate(1399,01,15))->get();
// شرط با عملگر
User::whereDateJalali('created_at', '>', '1399/01/15')->get();
```

### whereInMonthJalali

[](#whereinmonthjalali)

شرط یک ماه خاص شمسی در یک سال

```
User::whereInMonthJalali('created_at', 3)->get(); // فقط کاربران ایجاد شده در خرداد ماه سال جاری

User::whereInMonthJalali('created_at', 3, 1397)->get(); // فقط کاربران ایجاد شده در خرداد ماه سال 1397
```

### whereInYearJalali

[](#whereinyearjalali)

شرط یک سال خاص شمسی

```
User::whereInYearJalali('created_at')->get(); // فقط کاربران ایجاد شده در سال جاری

User::whereInYearJalali('created_at', 1397)->get(); //فقط کاربران ایجاد شده در سال 1397
```

### whereBetweenJalali

[](#wherebetweenjalali)

شرط بین دو تاریخ مشخص شمسی

```
User::whereBetweenJalali('created_at', ['1400/03/26 12:00:00', '1400/05/26 12:00:00'])->get(); // فقط کاربران ایجاد شده بین دو تاریخ مشخص شده
// یا
User::whereBetweenJalali('created_at', [Verta::createJalali(1400,01,15, 14, 0, 0), Verta::createJalali(1399,01,15, 14, 0, 0)])->get();
// شرط با Not
User::whereNotBetweenJalali('created_at', ['1400/03/26 12:00:00', '1400/05/26 12:00:00'])->get(); // همه کاربران به جز کاربران ایجاد شده در تاریخ مشخص
```

میدلویر
-------

[](#میدلویر)

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

`app/Http/Kernel.php`

کلاس

```
\Baloot\Middleware\FixRequestInputs
```

به آرایه

middleware

اضافه کنین

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

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

ولیدیشن
-------

[](#ولیدیشن)

iran\_phone: برای وارد کردن شماره های ثابت ایرانی

iran\_mobile: برای ولیدیشن شماره موبایل های ایرانی

> در صورتی که میخواید شماره هایی که بدون صفر هم وارد میشن رو بپذیره, به این صورت وارد کنید : iran\_mobile:true در غیر این صورت اگر صفر وارد نشه شماره تایید نمیشه.

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

```
public function test(Request $request)
{
    $request->validate([
        'mobile1' => 'required|iran_mobile',
        'phone' => 'required|iran_phone',
        'mobile2' => 'required|iran_mobile:true', // وارد کردن صفر در اول شماره اختیاری
    ]);
}
```

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

iran\_national\_code: ولیدیشن کد ملی

فیکر
----

[](#فیکر)

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

CustomImage:

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

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

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

$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
```

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

[](#استان-ها-و-شهرها)

برای شروع در

`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](https://github.com/cviebrock/eloquent-sluggable)

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

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

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

`province`, `city`

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

`city_by_id`: شهر با آی دی

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

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

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

استان: [Province](./src/Models/Province.php)

شهر: [City](./src/Models/City.php)

اسلاگ
-----

[](#اسلاگ)

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

```
Str::slug('test test')
```

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

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

خروجی

`"khonh-i-madrbzrgh"`

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

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

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

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

[](#استفاده-با-پکیج-eloquent-sluggable)

کافیه در فایل

`config/sluggable.php`

قسمت

method

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

```
'method' => 'str_to_slug',
```

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

[](#پیداکردن-بانک-از-روی-شماره-کارت)

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

```
find_bank_by_card_number("6037697531")
```

خروجی:

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

کلاس, نام کلاس بر اساس [این پکیج](https://github.com/webdesigniran/IranianBankLogos) هست.

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

[](#ساخته-شده-با-کمک)

- [Eloquent Sluggable](https://github.com/cviebrock/eloquent-sluggable)
- [Iran Cities](https://github.com/ahmadazizi/iran-cities)
- [TestBench](https://github.com/orchestral/testbench)
- [Verta](https://github.com/hekmatinasser/verta)

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance35

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity71

Established project with proven stability

 Bus Factor1

Top contributor holds 66.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~84 days

Recently: every ~119 days

Total

11

Last Release

1544d ago

Major Versions

v0.1.0 → 1.0.02020-04-13

PHP version history (4 changes)v0.0.2PHP ^7.1

v0.1.0PHP ^7.2.5

1.1.0PHP ^7.3

1.2.0PHP ^7.3|^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/f6724fa6b7c40ff996f69aea5936d48281ae26bbdf0395c975f6ffd057efc99a?d=identicon)[peyman136](/maintainers/peyman136)

---

Top Contributors

[![amir9480](https://avatars.githubusercontent.com/u/16279288?v=4)](https://github.com/amir9480 "amir9480 (54 commits)")[![peyman136](https://avatars.githubusercontent.com/u/1691974?v=4)](https://github.com/peyman136 "peyman136 (12 commits)")[![reziamini](https://avatars.githubusercontent.com/u/29504334?v=4)](https://github.com/reziamini "reziamini (7 commits)")[![erfansajjadie](https://avatars.githubusercontent.com/u/47176535?v=4)](https://github.com/erfansajjadie "erfansajjadie (5 commits)")[![hsyir](https://avatars.githubusercontent.com/u/3897547?v=4)](https://github.com/hsyir "hsyir (2 commits)")[![StyleCIBot](https://avatars.githubusercontent.com/u/11048387?v=4)](https://github.com/StyleCIBot "StyleCIBot (1 commits)")

---

Tags

laravelhelperssanjabteam

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/peyman136-baloot/health.svg)

```
[![Health](https://phpackages.com/badges/peyman136-baloot/health.svg)](https://phpackages.com/packages/peyman136-baloot)
```

###  Alternatives

[laravel/helpers

Provides backwards compatibility for helpers in the latest Laravel release.

80660.2M452](/packages/laravel-helpers)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
