daun/laravel-latte

在 Laravel 视图中使用 Latte 模板

1.2.1 2024-03-20 15:15 UTC

This package is auto-updated.

Last update: 2024-09-20 16:30:12 UTC


README

Latest Version on Packagist Test Status Code Coverage License

Laravel 视图中添加对 Latte 模板引擎的支持。

特性

  • 渲染 .latte 视图
  • 通过外观配置 Latte 引擎
  • 翻译提供程序以访问本地化消息
  • 包含部分时的 Laravel 风格路径解析
  • 广泛的测试覆盖

安装

composer require daun/laravel-latte

要求

  • PHP 8.1+
  • Laravel 9/10/11

使用方法

安装 composer 包将自动将服务提供程序注册到您的 Laravel 应用中。现在您可以像渲染其他视图一样渲染 Latte 文件。以下示例将使用 Latte 渲染位于 resources/views/home.latte 的视图。

Route::get('/', function() {
    return view('home');
});

配置

该包将从 config/latte.php 读取其配置。使用 Artisan 发布并自定义默认配置文件

php artisan vendor:publish --provider="Daun\LaravelLatte\ServiceProvider"

本地化

该包包含一个自定义翻译扩展,作为 Laravel 翻译服务的桥梁。它允许使用您在应用程序中注册的任何翻译在 Latte 视图中使用,使用 _ 标签或 translate 过滤器

{_'messages.welcome'}
{('messages.welcome'|translate)}

您可以像通常一样传递参数

{_'messages.welcome', [name: 'Adam']}
{('messages.welcome'|translate:[name: 'Adam'])}

通过在参数后或其位置传递自定义区域设置来翻译

{_'messages.welcome', [name: 'Mary'], 'fr'}
{_'messages.welcome', 'fr'}

复数化使用 transChoice 过滤器工作。

{('messages.apples'|transChoice:5)}

路径解析

该包包含一个自定义加载器,允许使用 Laravel 的点表示法指定文件夹来从子目录包含部分。

{* resolves to /resources/views/partials/slideshow/image.latte *}

{include 'partials.slideshow.image'}

要特别包含相对于当前文件的文件,请使用 ./../ 前缀路径

{include './image.latte'}

默认布局

如果您需要为所有视图提供一个常见的布局文件,您可以在 config/latte.php 中定义一个默认布局。现在,任何未设置特定布局的视图都将合并到该布局中。

[
    // /resources/views/layouts/default.latte
    'default_layout' => 'layouts.default'
]

配置 Latte

扩展

要扩展 Latte 并添加您自己的标签、过滤器和函数,您可以在 config/latte.php 中的 extensions 数组中提供要自动注册的 Latte 扩展列表。

[
    'extensions' => [
        \App\View\Latte\MyExtension::class
    ]
]

外观

您还可以直接从 Latte 外观访问和配置 Latte 引擎实例。修改其配置,添加自定义过滤器等。

use Daun\LaravelLatte\Facades\Latte;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Latte::addFilter('plural', fn($str) => Str::plural($str));
    }
}

事件

如果您需要在 Latte 引擎创建时收到通知,请监听 LatteEngineCreated 事件以接收并自定义返回的引擎实例。

use Daun\LaravelLatte\Events\LatteEngineCreated;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function register()
    {
        Event::listen(function (LatteEngineCreated $event) {
            $event->engine->setAutoRefresh(true);
        });
    }
}

许可证

MIT