proai / laravel-handlebars
LightnCandy 的 Laravel 封装,用于使用 Handlebars(和 Mustache)模板引擎。
Requires
- php: >=7.2
- illuminate/view: ^6.0|^7.0|^8.0|^9.0|^10.0
- zordius/lightncandy: 1.2.*
Requires (Dev)
- orchestra/testbench: ^5.3|^8.0
- phpunit/phpunit: ^9.2
README
此包允许您在 Laravel 中使用 Handlebars(和 Mustache)模板。您可以将 Handlebars 模板集成到 Blade 模板中,甚至可以在 Handlebars 模板中使用 Blade 语言指令 @lang 和 @choice。
如果您想在不同语言(例如 PHP 和 JavaScript)以及服务器端和客户端中使用相同的模板,那么它是一个完美的选择。由于此包封装了超级快速的模板引擎 LightnCandy,编译和渲染速度非常快。
安装
Laravel Handlebars 以 composer 包的形式分发。因此,您首先需要将包添加到您的 composer.json 文件中
-
对于 Laravel 6+
"proai/laravel-handlebars": "^1.14"
-
对于 Laravel 5.5 到 5.8
"proai/laravel-handlebars": "~1.8"
-
对于 Laravel 5.1 到 5.4
"proai/laravel-handlebars": "~1.5.0"
然后,您必须运行 composer update 来安装包。一旦完成,您必须将服务提供者添加到 config/app.php 中的 providers 数组中
/* * Package Service Providers... */ ProAI\Handlebars\HandlebarsServiceProvider::class,
您可以使用以下命令发布包配置
php artisan vendor:publish --tag=laravel-handlebars
用法
配置
config/handlebars.php 中的大多数选项也由 LightnCandy 使用。因此,请参阅 LightnCandy 的 README 文件以获取更多信息。
在此配置文件中无法设置基于目录选项。相反,该包使用 config/view.php 中的 paths 选项来定义基本目录,并在同一文件中使用 compiled 选项来定义编译模板的目录(即缓存目录)。
除了 LightnCandy 选项之外,还有 language_helpers、optional_raw_output 和 translate_raw_output 选项。以下是对这些选项的描述。
基础
您可以使用与使用 Blade 模板相同的方式使用 Handlebars 模板。您可以使用 View::make('articles', ['name' => 'Taylor']) 返回它们,或者使用 Blade 的 @include 指令包含它们,例如 @include('articles', ['name' => 'Taylor'])。
默认情况下,所有具有 .hbs 或 .handlebars 文件扩展名的视图都会自动检测为 Handlebars 模板。您可以在 config/handlebars.php 中的 fileext 数组中添加更多应被视为 Handlebars 模板的文件扩展名。
语言助手
如果您愿意,您也可以在 Handlebars 模板中使用 Blade 语言指令 @lang 和 @choice。为了使用它们,您必须设置 $language_helpers = true。以下是一个示例
// Blade syntax: @lang('message', ['firstname' => 'John', 'lastname' => $lastname]) @choice('comment_count', 2, ['item' => 'Article'])
// Handlebars syntax: {{lang 'message' firstname='John' lastname=lastname }} {{choice 'comment_count' 2 item='Article' }}
原始输出
此功能目前有错误。如果想要使用它,请使用 v1.1 或以下版本,或者帮助修复它!
如果您想输出模板的原始代码(可能是因为您想在客户端使用未渲染的模板),您可以在配置中设置 $optional_raw_output = true。然后,您可以将变量 $raw = true 传递给模板,或者更方便地使用 @raw Blade 指令。
// Passing the $raw variable to the view: View::make('articles', ['raw' => true]) @include('articles', ['raw' => true])
// Blade @raw directive: @raw('articles')
如果您想输出带有编译和渲染的语言变量的原始模板,您可以设置 $translate_raw_output = true。
部分
此包自动将当前模板的目录添加到 LightnCandy 的基本目录中。通过这种方式,可以轻松地将同一目录中的其他 Handlebars 模板包含进来。只需编写 {{> comment}} 以包含同一目录中的 comment.hbs。
示例模板
{{#each array_variable }} {{#if this }} {{ output_some_variable }} {{> include_templatename }} {{else}} {{lang 'language_variable' }} {{/if}} {{/each}}
有关Handlebars语法的更多信息,请参阅Handlebars文档。示例虽然是JavaScript的,但Handlebars模板在JavaScript和PHP中是相同的。
与Webpack一起使用
如果您想使用Webpack在客户端使用此包,请参阅这篇文章
支持
错误和功能请求在GitHub上跟踪。
许可证
此包在MIT许可证下发布。