barryvdh/laravel-twigbridge

此包已被弃用且不再维护。作者建议使用 rcrowe/twigbridge 包。

Laravel 4 的 Twig 视图集成

v0.3.3 2014-06-09 14:01 UTC

This package is auto-updated.

Last update: 2024-03-09 19:19:01 UTC


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

配置

要发布配置文件,您可以运行以下命令

$ 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!