proai/laravel-handlebars

LightnCandy 的 Laravel 封装,用于使用 Handlebars(和 Mustache)模板引擎。

1.15.0 2024-02-18 19:53 UTC

README

Latest Stable Version Total Downloads Latest Unstable Version License

此包允许您在 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_helpersoptional_raw_outputtranslate_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在客户端使用此包,请参阅这篇文章

Laravel中在PHP和JavaScript之间共享模板

支持

错误和功能请求在GitHub上跟踪。

许可证

此包在MIT许可证下发布。