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_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 还提供了两个 Artisan 命令以帮助开发
# Empty the Twig cache: $ php artisan twig:clean # Lint all Twig templates: $ php artisan twig:lint