protonemedia / laravel-blade-on-demand
在内存中编译Blade模板
Requires
- php: ^8.3 || ^8.2
- illuminate/mail: ^10.0|^11.0
- illuminate/view: ^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.4
This package is auto-updated.
Last update: 2024-09-20 13:59:29 UTC
README
Laravel包,用于在内存中编译Blade模板。需要PHP 8.0或更高版本,兼容Laravel 9。
赞助我们
❤️ 我们自豪地通过开发和免费提供Laravel包来支持社区。如果这个包为您节省了时间,或者您正在专业上依赖它,请考虑赞助维护和发展,并查看我们最新的高级包:Inertia Table。跟踪问题和拉取请求需要时间,但我们很高兴提供帮助!
安装
您可以通过composer安装此包
composer require protonemedia/laravel-blade-on-demand
用法
渲染Blade模板
您可以通过调用BladeOnDemand
外观的render
方法来渲染任何有效的Blade模板。此方法仅接受两个参数,模板内容和要传递给模板的数据。
$output = BladeOnDemand::render('Hello {{ $name }}', ['name' => 'Protone Media']); echo $output; // "Hello Protone Media"
这只是一个示例,但您也可以使用语句、组件和其他Blade功能。
处理缺失的变量
此功能可以防止您的渲染在数据数组中缺少变量时失败。默认情况下,它将使用变量的名称填充缺失的变量。在这个例子中,$name
缺失,因此数据数组变为['name' => 'name']
;
$output = BladeOnDemand::fillMissingVariables()->render('Hello {{ $name }}', []); echo $output; // "Hello name"
您还可以使用此功能在没有数据的情况下预览模板。请注意,当使用语句时,这可能会导致意外的结果。您还可以传递一个callable
给fillMissingVariables
方法来自定义缺失变量的处理方式
$output = BladeOnDemand::fillMissingVariables( fn ($variable) => "_MISSING_{$variable}_MISSING_" )->render('Hello {{ $name }}'); echo $output; // "Hello _MISSING_name_MISSING_"
将Markdown邮件渲染为HTML
此功能可以用来将邮件渲染成好像您正在使用Markdown邮件一样。
$contents = implode(PHP_EOL, [ '@component("mail::message")', '# Hello {{ $name }}', '@endcomponent', ]); $output = BladeOnDemand::renderMarkdownMailToHtml($contents, ['name' => 'Protone Media']); echo $output; // <!DOCTYPE> // <html xmlns="http://www.w3.org/1999/xhtml"> // <head> // ... // </head> // <body> // <style> // ... // </style> // <table> // ... // <h1>Hello Protone Media</h1> // ... // </table> // </body> // </html>
您可以选择指定一个主题,就像调用Mailable上的theme
方法一样。
BladeOnDemand::theme('invoice')->renderMarkdownMailToHtml($contents, $data);
将Markdown邮件渲染为文本
与上面的renderMarkdownMailToHtml
方法类似,但除了它使用text
目录中的组件外。您可以在Laravel文档中了解更多关于此功能的信息。
$contents = implode(PHP_EOL, [ '@component("mail::message")', '# Hello {{ $name }}', '@endcomponent', ]); $output = BladeOnDemand::renderMarkdownMailToText($contents, ['name' => 'Protone Media']); echo $output; // [AppName](http://localhost) // // # Hello Protone Media // // © 2020 AppName. All rights reserved.
解析Maildown邮件
parseMarkdownMail
方法与renderMarkdownMailToText
方法相同,但它还解析Markdown。
$contents = implode(PHP_EOL, [ '@component("mail::message")', '# Hello {{ $name }}', '@endcomponent', ]); $output = BladeOnDemand::parseMarkdownMail($contents, ['name' => 'Protone Media']); echo $output; // <p><a href="http://localhost">AppName</a></p> // <h1>Hello Protone Media</h1> // <p>© 2020 AppName. All rights reserved.</p>
测试
composer test
变更日志
请参阅CHANGELOG以获取更多关于最近更改的信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
其他Laravel包
Inertia Table
:Inertia.js的终极表格,内置查询构建器。Laravel Cross Eloquent Search
:Laravel包,用于在多个Eloquent模型中搜索。Laravel Eloquent Scope as Select
:停止在PHP中重复Eloquent查询范围和约束。此包允许您通过将其添加为子查询来重用查询范围和约束。Laravel FFMpeg
:此包为Laravel提供FFmpeg的集成。文件的存储由Laravel的文件系统处理。Laravel MinIO Testing Tools
:在MinIO S3服务器上运行您的测试。Laravel Mixins
:Laravel好用的集合。Laravel Paddle
:支持webhooks/events的Paddle.com API集成,用于Laravel。Laravel Task Runner
:像Blade组件一样编写Shell脚本,并在本地或远程服务器上运行它们。Laravel Verify New Email
:此包添加了对验证新电子邮件地址的支持:当用户更新其电子邮件地址时,新地址在验证之前不会替换旧地址。Laravel XSS Protection
:用于保护您的应用程序免受跨站脚本(XSS)攻击的Laravel中间件。它净化请求数据,并且可以净化Blade输出语句。
安全
如果您发现任何安全问题,请通过电子邮件pascal@protone.media联系,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。