opm87 / twigbridge
为 Laravel 添加 Twig 的功能
Requires
- php: >=7.1
- illuminate/support: ^5.5|^6|^7|^8
- illuminate/view: ^5.5|^6|^7|^8
- twig/twig: ~2.0
Requires (Dev)
- laravel/framework: 5.6.*|5.7.*|5.8.*
- mockery/mockery: ~1.1
- phpunit/phpunit: ~7.3
- satooshi/php-coveralls: ~2.0
- squizlabs/php_codesniffer: ~3.3
Suggests
- laravelcollective/html: For bringing back html/form in Laravel 5.x
- twig/extensions: ~1.0
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.1
- v1.0.0
- dev-master / 0.11.x-dev
- 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-dev
- dev-revert-294-twig_127
This package is auto-updated.
Last update: 2024-09-07 22:24:10 UTC
README
无缝地在 Laravel 5 中实现 Twig。
要求
安装
使用 Composer 安装此包
$ composer require rcrowe/twigbridge
快速入门
Laravel
Composer 安装或更新你的包后,你需要将 TwigBridge 注册到 Laravel。打开 config/app.php,找到文件末尾的 providers 键,添加 TwigBridge\ServiceProvider::class 到末尾
'providers' => [ // ... TwigBridge\ServiceProvider::class, ],
现在找到 aliases 键,再次在文件末尾,添加 'Twig' => TwigBridge\Facade\Twig::class 以便更容易地访问 TwigBridge(或 Twig_Environment)类
'aliases' => [ // ... 'Twig' => TwigBridge\Facade\Twig::class, ],
现在,您已经将这两行添加到 config/app.php 中,我们将使用 Artisan 发布此包的配置文件
$ php artisan vendor:publish --provider="TwigBridge\ServiceProvider"
您现在可以像使用任何其他视图一样开始使用 Twig
// resources/views/hello.twig <h1>{{ 'Hello, world' }}<h1>
// app/Http/routes.php Route::get('/', function () { return view('hello'); });
Lumen
对于 Lumen,你需要加载相同的 Service Provider,但必须在本地配置中禁用 Auth、Translator 和 Url 扩展。将 config/twigbridge.php 文件复制到您的本地 config 文件夹,并在 bootstrap/app.php 中注册配置和服务提供者
$app->configure('twigbridge'); $app->register('TwigBridge\ServiceProvider');
配置
要告诉此包从多个位置加载您的 Twig 文件,更新 config/view.php 中的 paths 数组。
您的 Twig 文件可以有 config/twigbridge.php 中 twig.file_extensions 键配置的任何文件扩展名。默认支持 .html.twig 和 .twig。
用法
您可以通过像调用其他视图一样调用 Twig 模板
view('i_am_twig', [...]);
TwigBridge 还支持其他包中的视图
view('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 模板中使用。为此,将 Twig 要加载的扩展列表添加到 config/twigbridge.php 中的 enabled 数组
'enabled' => [ '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.* 风格的 Facades,请启用 Legacy Facades 扩展
TwigBridge\Extension\Laravel\Legacy\Facades
FilterLoader 和 FunctionLoader
这些加载扩展将 Laravel 辅助函数公开为 Twig 函数和过滤器。查看 config/twigbridge.php 文件以查看定义的函数和过滤器的列表。您也可以添加自己的。
FacadeLoader
FacadeLoader 扩展允许您调用在 config/twigbridge.php 中配置的任何 facade。这使您的 Twig 模板可以与任何 Laravel 类以及任何其他别名类集成。
要使用 Laravel 集成(或者任何别名类和方法),请将您的门面添加到配置文件中,并像这样调用它们:URL.to(link)(而不是URL::to($link))。
函数/过滤器/变量
以下助手/过滤器是由默认扩展添加的。它们基于 Laravel 的标准助手函数。
函数
asset、action、url、route、secure_url、secure_assetauth_check、auth_guest、auth_usercanconfig_get、config_hasdumpform_*(所有Form::*方法,下划线命名法)html_*(所有Html::*方法,下划线命名法)input_get、input_old、input_haslink_to、link_to_asset、link_to_route、link_to_actionsession_has、session_get、csrf_token、csrf_field、method_fieldstr_*(所有Str::*方法,下划线命名法)trans、trans_choiceurl_*(所有URL::*方法,下划线命名法)
过滤器
camel_case、snake_case、studly_casestr_*(所有Str::*方法,下划线命名法)trans、trans_choice
全局变量
app:Illuminate\Foundation\Application对象errors:来自验证器的$errorsMessageBag
Artisan 命令
TwigBridge 还提供了两个 Artisan 命令以帮助开发
# Empty the Twig cache: $ php artisan twig:clean # Lint all Twig templates: $ php artisan twig:lint