protonemedia/laravel-blade-on-demand

在内存中编译Blade模板

1.9.0 2024-03-12 11:49 UTC

This package is auto-updated.

Last update: 2024-09-20 13:59:29 UTC


README

Latest Version on Packagist run-tests Quality Score Total Downloads

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"

您还可以使用此功能在没有数据的情况下预览模板。请注意,当使用语句时,这可能会导致意外的结果。您还可以传递一个callablefillMissingVariables方法来自定义缺失变量的处理方式

$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)。有关更多信息,请参阅许可证文件