barryvdh / laravel-twigbridge
Requires
- php: >=5.3.0
- illuminate/support: 4.x
- illuminate/view: 4.x
- symfony/twig-bridge: >=2.3
- twig/twig: ~1.12
Requires (Dev)
- mockery/mockery: ~0.7.2
- phpunit/phpunit: ~3.7.0
README
注意:此包已被废弃,推荐使用 https://github.com/rcrowe/TwigBridge。请尝试 0.6.x 版本,它应该非常相似并提供了相同的功能。进一步的进展将在这里进行。
此包将 Twig 作为 Laravel 模板引擎添加
- 使用 .twig 文件就像使用 Blade/PHP 模板一样
- 支持创建者/作曲家事件
- 轻松添加助手/过滤器(如
{{ url('/') }}
或{{ 'someThing' | snake_case }}
) - 可以调用 Facades(如
{{ MyModel.to('/') }}
) - 可以与 Assetic(https://github.com/barryvdh/laravel-assetic)集成
- 默认扩展以提高易用性。
有关 Twig 模板的信息,请参阅 http://twig.sensiolabs.org/
安装
在您的 composer.json 中要求此包,并运行 composer update(或直接运行 composer require barryvdh/laravel-twigbridge:dev-master
)
"barryvdh/laravel-twigbridge": "0.3.x"
更新 composer 后,将 ServiceProvider 添加到 app/config/app.php 中的 providers 数组
'Barryvdh\TwigBridge\ServiceProvider',
您可以添加 Twig Facade 以方便访问 Twig_Environment,例如 Twig::render('template.twig')
。
'Twig' => 'Barryvdh\TwigBridge\Twig',
用法
安装后,您只需使用 View::make('index'); 在 View::make() 调用中省略 .twig 扩展名,就像 Blade 文件一样。在您的 Twig 文件中,您可以带或不带 .twig 来引用它们。您还可以使用视图作曲家/创建者,就像在 Blade 模板中一样。
View::composer('profile', function($view) { $view->with('count', User::count()); });
扩展
以下助手/过滤器由默认扩展添加。它们基于助手和/或 Facades,因此应该是自我解释的。
函数
- asset, action, url, route, secure_url, secure_asset
- link_to, link_to_asset, link_to_route, link_to_action
- auth_check, auth_guest, auth_user
- config_get, config_has
- session_has, session_get, csrf_token
- trans, trans_choice
- form_* (所有 Form::* 方法,蛇形化)
- html_* (所有 Html::* 方法,蛇形化)
- str_* (所有 Str::* 方法,蛇形化)
- url_* (所有 URL::* 方法,蛇形化)
过滤器
- camel_case, snake_case, studly_case
- str_* (所有 Str::* 方法,蛇形化)
全局变量
- app: Illuminate\Foundation\Application 对象
- errors: 验证器的 $errors MessageBag(始终可用)
示例模板语法
在一个 Blade 模板中,如果您有一个编辑 Task/Todo 应用程序中任务的路由,您将使用以下语法来链接到路由。
{{ link_to_route('tasks.edit', 'Edit', $task->id, array('class' => 'btn btn-primary')) }}
在 Twig 模板中,您将使用以下语法做同样的事情。注意,任务对象去除了美元符号($
),而不是箭头(->
),您使用点('.'
)。此外,您将数组转换为 Python/Javascript 字典类型语法。
{{ link_to_route('tasks.edit', 'Edit', task.id, {'class': 'btn btn-primary'}) }}
命令
包含 2 个 Artisan 命令
$ php artisan twig:clear
- 清除 Twig 缓存中的编译视图
$ php artisan twig:lint <dir or filename>
- 检查目录或文件中的 Twig 错误,例如
php artisan twig:lint app/views
- 检查目录或文件中的 Twig 错误,例如
配置
要发布配置文件,您可以运行以下命令
$ php artisan config:publish barryvdh/laravel-twigbridge
修改您的配置以选择您想要使用的助手/过滤器以及您想要注册的门面。您还可以传递一个回调或数组来定义选项。您还可以使用Twig_SimpleFunction或Twig_SimpleFilter的实例。除了门面,您还可以添加您的模型。
'functions' => array( 'simple_function', 'class_function' => 'MyClass@method', 'other_function' => array( 'is_safe' => array('html') ), 'call_me' => array( 'is_safe' => array('html'), 'callback' => function($value){ return phone($value); } ) ), 'filters' => array( 'filter_this' => function($value){ return doSomething($value); } ), 'facades' => array( 'Auth', 'MyModel' )
扩展
Twig_Environment在App容器中可用,名称为'twig',因此您可以通过app('twig')或App::make('twig')来访问它。ChainLoader的名称为'twig.loader',数组模板位于'twig.templates'。您还可以使用Twig Facade直接访问Twig_Environment的功能。
//Using the App container $twig = app('twig'); $twig->addFunction(new Twig_SimpleFunction(..)); $loader = App::make('twig.loader'); $loader->addLoader($myLoader); //Using the Facade Twig::addGlobal('key', $value); Twig::addFunction(new Twig_SimpleFunction(..)); Twig::getLoader()->addLoader($myLoader); //Adding templates to the array loader App::extend('twig.templates', function($templates){ $templates['hello'] = 'Hello World!'; return $templates; }); echo Twig::render('hello'); //Hello World!