salamzadeh/pb-helper
Composer 安装命令:
composer require salamzadeh/pb-helper
包简介
Laravel helper package for Iranians
关键字:
README 文档
README
پکیج کمکی لاراول برای ایرانیان
امکانات:
- میدلویر برای تعمیر حروف ک و ی عربی و اعداد فارسی و عربی
- تابع تهیه اسلاگ فارسی
- ذخیره و بازیابی تاریخ شمسی در الوکوئنت
- شرط گذاری روی کوئری با تاریخ شمسی
- ولیدیتور شماره همراه و شماره تماس ثابت
- ولیدیتور کد ملی - کارت بانکی و شماره شبا
- ولیدیتور کد پستی ایران
- دیتابیس شهر ها و استان های ایران به همراه روت بایندینگ ها
- پیدا کردن بانک از روی شماره کارت
- نصب
- کانفیگ
- ذخیره و بازیابی تاریخ شمسی
- کوئری بیلدر تاریخ شمسی
- میدلویر
- ولیدیشن
- فیکر
- استان ها و شهرها
- اسلاگ
- پیداکردن بانک از روی شماره کارت
- ساخته شده با کمک
نصب
برای نصب شما به لاراول نسخه 6 یا بالاتر نیاز دارید. با استفاده از کومپوزر در پروژه لاراولی خود این پکیج رو نصب کنید.
composer require salamzadeh/pb-helper
بعد هم با این کامند فایل کانفیگ رو بسازین.
php artisan vendor:publish --provider=PBHelper\\PBHelperServiceProvider
کانفیگ
در فایل
config/pb-helper.php
میتونین کانفیگ رو تغییر بدین.
iran_province: اگه نمیخاین از قابلیت استان و شهر استفاده کنین مقدار این قسمت رو برابر false قرار بدید تا جداولش ایجاد نشه.
ذخیره و بازیابی تاریخ شمسی
این پکیج این امکان رو به شما میده تا به راحتی تاریخ های موجود در مدل لاراول رو به راحتی به کلاس ورتا تبدیل کنید. برای شروع
trait
PBHelper\EloquentHelper
رو به مدلی که میخاین اضافه کنین.
use PBHelper\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 PBHelper\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
شرط با یک تاریخ و زمان به خصوص شمسی
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
شرط با یک تاریخ به خصوص شمسی
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
شرط یک ماه خاص شمسی در یک سال
User::whereInMonthJalali('created_at', 3)->get(); // فقط کاربران ایجاد شده در خرداد ماه سال جاری User::whereInMonthJalali('created_at', 3, 1397)->get(); // فقط کاربران ایجاد شده در خرداد ماه سال 1397
whereInYearJalali
شرط یک سال خاص شمسی
User::whereInYearJalali('created_at')->get(); // فقط کاربران ایجاد شده در سال جاری User::whereInYearJalali('created_at', 1397)->get(); //فقط کاربران ایجاد شده در سال 1397
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
کلاس
\PBHelper\Middleware\FixRequestInputs
به آرایه
middleware
اضافه کنین
protected $middleware = [ ... \PBHelper\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(\PBHelper\Database\CitiesTableSeeder::class); // سیدر شهر ها و استان ها }
سپس بعد از میگریت سید رو انجام بدین.
php artisan migrate --seed
حالا جداول شما از شهر ها و استان ها پر شده برای استفاده از دو مدل پایین میتونین استفاده کنین.
مدل استان:
PBHelper\Models\Province
مدل شهر:
PBHelper\Models\City
نمونه:
use PBHelper\Models\City; City::where('name', 'آمل')->first()
روت بایندینگ
اگه میخاین از استان و شهر در آدرس ها استفاده کنین از این روش استفاده کنین.
use PBHelper\Models\Province; use PBHelper\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
موجود در شهر ها و استان ها استفاده کنین. این اسلاگ ها به کمک
تهیه شدن. بنابراین آدرس رو به این شکل باز کنین.
/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",
]
کلاس, نام کلاس بر اساس این پکیج هست.
ساخته شده با کمک
salamzadeh/pb-helper 适用场景与选型建议
salamzadeh/pb-helper 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 13 次下载、GitHub Stars 达 1, 最近一次更新时间为 2023 年 07 月 23 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「helpers」 「laravel」 「pbdp」 「salamzadeh」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 salamzadeh/pb-helper 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 salamzadeh/pb-helper 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 salamzadeh/pb-helper 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
HTML and form generation
Falsy helps you manage half-truths with PHP
Alfabank REST API integration
To Backend with Laravel
A rails-inspired form builder for PHP
Timezones for Laravel
统计信息
- 总下载量: 13
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 7
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-07-23