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许可证下发布。