rcrowe / twigbridge
为 Laravel 添加 Twig 的强大功能
Requires
- php: ^8.1
- illuminate/support: ^9|^10|^11
- illuminate/view: ^9|^10|^11
- twig/twig: ~3.9
Requires (Dev)
- ext-json: *
- laravel/framework: ^9|^10|^11
- mockery/mockery: ^1.3.1
- phpunit/phpunit: ^8.5.8 || ^9.3.7
- squizlabs/php_codesniffer: ^3.6
- dev-master / 0.14.x-dev
- v0.14.3
- v0.14.2
- v0.14.1
- v0.14.0
- v0.13.1
- v0.13.0
- 0.12.x-dev
- v0.12.4
- v0.12.3
- v0.12.2
- v0.12.1
- v0.12.0
- 0.11.x-dev
- v0.11.4
- v0.11.3
- v0.11.2
- v0.11.1
- v0.11.0
- 0.10.x-dev
- 0.9.x-dev
- v0.9.12
- v0.9.11
- v0.9.10
- v0.9.9
- v0.9.8
- v0.9.7
- v0.9.6
- v0.9.5
- v0.9.4
- v0.9.3
- v0.9.2
- v0.9.1
- v0.9.0
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.2
- v0.7.1
- v0.7.0
- 0.6.x-dev
- v0.6.2
- v0.6.1
- 0.6.0
- 0.6.0-beta3
- 0.6.0-beta2
- 0.6.0-beta1
- v0.5.5
- 0.5.4
- 0.5.3
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.1
- 0.4.0
- 0.3.1
- 0.3.0
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- v0.1.12
- v0.1.11
- 0.1.10
- v0.1.9
- v0.1.8
- v0.1.7
- v0.1.6
- v0.1.5
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- 0.1.0
- v0.0.7
- v0.0.6
- v0.0.5
- v0.0.4
- v0.0.3
- v0.0.2
- v0.0.1
- dev-feat-yield
- dev-feat-core-extension
- dev-laravel11
- dev-revert-294-twig_127
This package is auto-updated.
Last update: 2024-09-15 13:48:52 UTC
README
要求
TwigBridge >= 0.13 支持 Twig 3。如果您需要 Twig 1/2 支持,请使用 0.12 版本。
安装
使用 Composer 需要此包
composer require rcrowe/twigbridge
快速入门
Laravel 会自动注册 Service Provider。使用 Artisan 发布 twig 配置文件
php artisan vendor:publish --provider="TwigBridge\ServiceProvider"
到此为止,您现在可以像使用其他任何视图一样开始使用 twig
//app/Http/routes.php //twig template resources/views/hello.twig Route::get('/', function () { return View::make('hello'); });
您可以在 resources/views 中创建 .twig 扩展名的 twig 文件。
resources/views/hello.twig
配置
一旦 Composer 安装或更新了您的包,您需要将 TwigBridge 注册到 Laravel 本身。打开 config/app.php 并找到底部的 providers 键并添加
'TwigBridge\ServiceProvider',
您可以将 TwigBridge Facade 添加到其中,以便更容易地访问 TwigBridge(或 Twig\Environment)。
'Twig' => 'TwigBridge\Facade\Twig',
Twig::addExtension('TwigBridge\Extension\Loader\Functions'); Twig::render('mytemplate', $data);
您可以在 ConfigServiceProvider 中扩展 TwigBridge 的配置文件,在 twigbridge
键下。您可以在 vendor/rcrowe/twigbridge/config
找到默认配置文件。
您应该使用 Artisan 使用以下命令将默认配置文件从 /vendor
目录复制到 /config/twigbridge.php
php artisan vendor:publish --provider="TwigBridge\ServiceProvider"
如果您修改了 /config/twigbridge.php
文件,您可能需要运行 twig:clean
Artisan 命令以使更改生效。
Lumen 上的安装
对于 Lumen,您需要加载相同的 Service Provider,但您必须禁用本地配置中的 Auth
、Translator
和 Url
扩展。将 config/twigbridge.php
文件复制到您的本地 config
文件夹,并在 bootstrap/app.php
中注册配置 + Service Provider
$app->configure('twigbridge'); $app->register('TwigBridge\ServiceProvider');
用法
您调用 Twig 模板的方式就像调用其他任何视图一样
// Without the file extension View::make('i_am_twig', [...])
TwigBridge 也支持其他包中的视图
View::make('pagination::simple')
在扩展另一个 Twig 模板时,上述规则仍然适用
{% extends "parent" %} {% extends "pagination::parent" %}
您可以调用带参数的函数
{{ link_to_route('tasks.edit', 'Edit', task.id, {'class': 'btn btn-primary'}) }}
并且输出变量,默认情况下已转义。使用 raw
过滤器以跳过转义。
{{ some_var }} {{ html_var | raw }} {{ long_var | str_limit(50) }}
扩展
有时您希望在 Twig 模板中使用扩展或添加新函数。在 config/twigbridge.php 中的 enabled
数组中添加一个列表,以便 Twig 加载扩展。
'enabled' => array( 'TwigBridge\Extensions\Example' )
TwigBridge 支持字符串或闭包作为回调,因此例如,您可能像以下这样实现 Assetic Twig 扩展
'enabled' => [ function($app) { $factory = new Assetic\Factory\AssetFactory($app['path'].'/../some/path/'); $factory->setDebug(false); // etc..... return new Assetic\Extension\Twig\AsseticExtension($factory); } ]
TwigBridge 默认启用了以下扩展
- Twig\Extension\DebugExtension
- TwigBridge\Extension\Laravel\Auth
- TwigBridge\Extension\Laravel\Config
- TwigBridge\Extension\Laravel\Dump
- TwigBridge\Extension\Laravel\Form
- TwigBridge\Extension\Laravel\Gate
- TwigBridge\Extension\Laravel\Html
- TwigBridge\Extension\Laravel\Input
- TwigBridge\Extension\Laravel\Session
- TwigBridge\Extension\Laravel\String
- TwigBridge\Extension\Laravel\Translator
- TwigBridge\Extension\Laravel\Url
- TwigBridge\Extension\Loader\Facades
- TwigBridge\Extension\Loader\Filters
- TwigBridge\Extension\Loader\Functions
要启用 '0.5.x' 样式的 Facades,请启用 Legacy Facades 扩展
- TwigBridge\Extension\Laravel\Legacy\Facades
FilterLoader 和 FunctionLoader
这些加载扩展将 Laravel 辅助函数作为 Twig 函数和过滤器暴露。
查看 config/twigbridge.php 文件以查看定义的函数/过滤器的列表。您也可以添加自己的。
FacadeLoader
FacadeLoader 扩展允许您调用在 config/twigbridge.php 中配置的任何门面。这使得您的 Twig 模板可以与任何 Laravel 类以及任何其他别名类进行集成。
要使用 Laravel 集成(或者任何别名类和方法),只需将您的门面添加到配置中,并像这样调用它们:URL.to(link)
(而不是URL::to($link)
)
函数/过滤器/变量
以下默认扩展添加的帮助器/过滤器。它们基于帮助器和/或门面,因此应该很容易理解。
函数
- asset, action, url, route, secure_url, secure_asset
- auth_check, auth_guest, auth_user
- can
- config_get, config_has
- dump
- form_*(所有 Form::* 方法,使用下划线命名)
- html_*(所有 Html::* 方法,使用下划线命名)
- input_get, input_old, input_has
- link_to, link_to_asset, link_to_route, link_to_action
- session_has, session_get, csrf_token, csrf_field, method_field
- str_*(所有 Str::* 方法,使用下划线命名)
- trans, trans_choice
- url_*(所有 URL::* 方法,使用下划线命名)
过滤器
- camel_case, snake_case, studly_case
- str_*(所有 Str::* 方法,使用下划线命名)
- trans, trans_choice
全局变量
- app: Illuminate\Foundation\Application 对象
- errors: 验证器中的 $errors MessageBag(始终可用)
Artisan 命令
TwigBridge 为 CLI 交互提供了一个命令。
清空 Twig 缓存
$ php artisan twig:clean
检查所有 Twig 模板
$ php artisan twig:lint