protonemedia / laravel-mixins
Laravel Mixins
Requires
- php: ^8.1 || ^8.2 || ^8.3
- illuminate/support: ^10.0 || ^11.0
Requires (Dev)
- html2text/html2text: ^4.3
- jeremykendall/php-domain-parser: ^6.0
- laravel/ui: ^4.0
- mockery/mockery: ^1.4.4
- moneyphp/money: ^3.3 || ^4.5
- nesbot/carbon: ^2.66 || ^3.0
- orchestra/testbench: ^8.0 || ^9.0
- phpunit/phpunit: ^10.4
- spatie/laravel-sitemap: ^6.0 || ^7.2
- symfony/process: ^6.0 || ^7.0
Suggests
- html2text/html2text: To convert HTML to formatted plain text
- moneyphp/money: Blade directives to represent money
- spatie/laravel-sitemap: To generate sitemaps
- symfony/process: To run Ghostscript
This package is auto-updated.
Last update: 2024-09-20 14:04:41 UTC
README
赞助我们
❤️ 我们自豪地通过开发Laravel包并免费提供来支持社区。如果这个包为您节省了时间,或者您在专业上依赖它,请考虑赞助维护和开发,并查看我们的最新高级包: Inertia Table。跟踪问题和拉取请求需要时间,但我们很乐意帮助!
要求
- PHP 8.1+
- Laravel 10.0
安装
您可以通过Composer安装此包
composer require protonemedia/laravel-mixins
没有服务提供者或自动发现/注册。所有功能都是可选的。
内容
Blade指令
控制台命令
验证规则
字符串宏
请求
Blade指令
您可以通过在类上调用directive
方法来注册Blade指令。您可以使用可选的第一个参数更改指令的名称。
十进制货币格式化器
注意:此指令需要moneyphp/money
包。
注册指令,例如,通过将其添加到您的AppSerivceProvider
ProtoneMedia\LaravelMixins\Blade\DecimalMoneyFormatter::directive();
您可以根据需要自定义指令的名称和默认货币代码
ProtoneMedia\LaravelMixins\Blade\DecimalMoneyFormatter::directive('decimals', 'EUR');
指令的第一个参数是分币金额。第二个可选参数是货币。
// 0.99 @decimals(99) // 1.00 @decimals(100) // 100 @decimals(100, 'XTS')
Intl货币格式化器
注意:此指令需要moneyphp/money
包。
注册指令,例如,通过将其添加到您的AppSerivceProvider
ProtoneMedia\LaravelMixins\Blade\IntlMoneyFormatter::directive();
您可以根据需要自定义指令的名称、默认货币代码和区域设置
ProtoneMedia\LaravelMixins\Blade\IntlMoneyFormatter::directive('money', 'EUR', 'nl_NL');
指令的第一个参数是分币金额。第二个可选参数是货币。第三个可选参数是区域设置。
// € 0,99 @money(99) // € 1,00 @money(100) // US$ 1,00 @money(100, 'USD') // 1 000,00 $US @money(100, 'USD', 'fr')
命令
生成网站地图
注意:此命令需要spatie/laravel-sitemap
包。
您可以通过将其添加到您的App\Console\Kernel
文件或将register
方法调用在类上来注册该命令。
ProtoneMedia\LaravelMixins\Commands\GenerateSitemap::register();
您还可以设置自定义签名
ProtoneMedia\LaravelMixins\Commands\GenerateSitemap::register('generate-sitemap');
它生成您整个站点的网站地图并将其存储在public
文件夹中的sitemap.xml
中。
php artisan sitemap:generate
验证规则
当前密码
如果值与认证用户的密码匹配,则通过。
$rule = new ProtoneMedia\LaravelMixins\Rules\CurrentPassword;
截至Laravel 9,此验证规则是内置的。
带边距的尺寸
尺寸规则的扩展,带有一个margin
选项。当您处理具有重复小数的比例时非常有用。
use ProtoneMedia\LaravelMixins\Rules\DimensionsWithMargin; $rule = DimensionsWithMargin::make()->ratio(20 / 9)->margin(1),
主机
验证URL是否与给定主机匹配。
use ProtoneMedia\LaravelMixins\Rules\Host; $rule = Host::make(['facebook.com', 'fb.me']);
键中
验证给定的键或索引是否存在于数组中。
use ProtoneMedia\LaravelMixins\Rules\InKeys; $rule = new InKeys(['laravel' => 'Laravel Framework', 'tailwindcss' => 'Tailwind CSS framework']); // same as use Illuminate\Validation\Rules\In; $rule = new In(['laravel', 'tailwindcss']);
最大单词数
如果值包含的单词数不超过指定的数量,则通过。
use ProtoneMedia\LaravelMixins\Rules\MaxWords; $rule = MaxWords::make(250);
无协议的URL
如果URL有效,即使没有协议,也通过。
$rule = new ProtoneMedia\LaravelMixins\Rules\UrlWithoutScheme;
字符串宏
您可以使用混入功能添加新的方法。
紧凑型
Str::mixin(new ProtoneMedia\LaravelMixins\String\Compact); $string = "Hoe simpeler hoe beter. Want hoe minder keuze je een speler laat, hoe groter de kans dat hij het juiste doet."; // Hoe simpeler hoe beter. Want hoe ... de kans dat hij het juiste doet. echo Str::compact($string);
它有一个可选的第二个参数,用于指定每边的长度。通过可选的第三个参数,您可以指定分隔符。
// Hoe simpeler hoe - het juiste doet. echo Str::compact($string, 16, ' - ');
人类文件大小
将文件大小转换为可读的字符串版本。
Str::mixin(new ProtoneMedia\LaravelMixins\String\HumanFilesize); $size = 3456789; // '3.3 MB' Str::humanFilesize($size));
文本
注意:此宏需要 html2text/html2text
包。
将 HTML 转换为纯文本。
Str::mixin(new ProtoneMedia\LaravelMixins\String\Text); $html = "<h1>Protone Media</h1>"; // Protone Media Str::text($html);
URL
如果给定的 URL 中缺少方案,则预置 https://
。
Str::mixin(new ProtoneMedia\LaravelMixins\String\Url); $url = "protone.media"; // https://protone.media Str::url($url);
秒转换为时间
将秒转换为 'mm:ss' / 'hh:mm:ss' 格式。
Str::mixin(new ProtoneMedia\LaravelMixins\String\SecondsToTime); Str::secondsToTime(10); // 00:10 Str::secondsToTime(580); // 09:40 Str::secondsToTime(3610); // 01:00:10 // force 'hh:mm:ss' format, even under an hour: Str::secondsToTime(580, false); // 00:09:40
PDF再生
注意:需要 symfony/process
包。
使用 Ghostscript 重新生成 PDF 内容。
$ghostscript = new ProtoneMedia\LaravelMixins\Pdf\Ghostscript; $regeneratedPdf = $ghostscript->regeneratePdf( file_get_contents('/uploads/invoice.pdf') );
您还可以指定 ghostscript
二进制文件的路径。
$ghostscript = new Ghostscript('gs-binary');
将Base64输入数据转换为文件
将 ConvertsBase64ToFiles
特性和 base64FileKeys
方法添加到您的表单请求中。
use Illuminate\Foundation\Http\FormRequest; use ProtoneMedia\LaravelMixins\Request\ConvertsBase64ToFiles; class ImageRequest extends FormRequest { use ConvertsBase64ToFiles; protected function base64FileKeys(): array { return [ 'jpg_image' => 'Logo.jpg', ]; } public function rules() { return [ 'jpg_image' => ['required', 'file', 'image'], ]; } }
现在您可以像常规上传的文件一样获取文件。
$jpgFile = $request->file('jpg_image'); // Logo.jpg $jpgFile->getClientOriginalName();
此特性还支持嵌套数据。您可以通过嵌套数组引用键,或者使用 点表示法。
class ImageRequest extends FormRequest { use ConvertsBase64ToFiles; protected function base64FileKeys(): array { return [ 'company.logo' => 'Logo.jpg', 'user' => [ 'avatar' => 'Avatar.jpg', ], ]; } }
想了解更多关于这个特性的信息?请查看 博客文章。
测试
composer test
变更日志
请参阅 CHANGELOG 以了解最近有哪些变化。
贡献
请参阅 CONTRIBUTING 以获取详细信息。
其他 Laravel 包
Inertia Table
:Inertia.js 的终极表格,内置查询构建器。Laravel Blade On Demand
:用于在内存中编译 Blade 模板的 Laravel 包。Laravel Cross Eloquent Search
:用于在多个 Eloquent 模型中搜索的 Laravel 包。Laravel Eloquent Scope as Select
:停止在 PHP 中重复 Eloquent 查询作用域和约束。此包允许您通过将其添加为子查询来重用查询作用域和约束。Laravel FFMpeg
:此包为 Laravel 提供了 FFmpeg 的集成。文件存储由 Laravel 的文件系统处理。Laravel MinIO Testing Tools
:在 MinIO S3 服务器上运行您的测试。Laravel Paddle
:Laravel 的 Paddle.com API 集成,支持 webhooks/events。Laravel Task Runner
:像 Blade 组件一样编写 Shell 脚本,并在本地或远程服务器上运行它们。Laravel Verify New Email
:此包添加了对验证新电子邮件地址的支持:当用户更新其电子邮件地址时,它不会替换旧地址,直到新地址被验证。Laravel XSS Protection
:用于防止跨站脚本 (XSS) 的 Laravel 中间件。它对请求输入进行清理,并且可以清理 Blade 输出语句。
安全性
如果您发现任何安全相关的问题,请通过电子邮件 pascal@protone.media 而不是使用问题跟踪器来联系。
鸣谢
许可
MIT 许可证(MIT)。请参阅许可文件获取更多信息。
Treeware
此包是Treeware。如果您在生产环境中使用它,那么我们请求您为世界买一棵树以感谢我们的工作。通过为 Treeware 森林做出贡献,您将为当地家庭创造就业机会并恢复野生动物栖息地。