daun / laravel-latte
在 Laravel 视图中使用 Latte 模板
Requires
- php: ^8.1
- laravel/framework: ^9.0 || ^10.0 || ^11.0
- latte/latte: ^3.0
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- mockery/mockery: ^1.6
- orchestra/testbench: ^8.21
- pestphp/pest: ^2.34
- pestphp/pest-plugin-laravel: ^2.3
This package is auto-updated.
Last update: 2024-09-20 16:30:12 UTC
README
在 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); }); } }