gencer/twigbridge-laravel-4

为 Laravel 添加 Twig 的功能

v0.6.1 2014-08-04 12:23 UTC

README

允许您在 Twig 中无缝使用 Laravel 4

Latest Stable Version Total Downloads Build Status Coverage Status License

注意:这是 Robert Crowe 当前 TwigBridge 的分支。我维护这个分支是因为当前的测试版阶段强迫我们使用所有存储库的 dev 分支。我个人不想使用所有组件的 dev 分支 :)

安装

gencer/twigbridge-laravel-4 添加到 composer.json 的需求中

{
    "require": {
        "gencer/twigbridge-laravel-4": "0.6.*"
    }
}

使用 composer update 更新您的包或使用 composer install 安装。

Composer 安装或更新了您的包后,您需要将 TwigBridge 注册到 Laravel 本身。打开 app/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);

配置

可以通过创建 app/config/packages/rcrowe/twigbridge/config.php 来扩展 TwigBridge 的配置文件。您可以在 vendor/rcrowe/twigbridge/src/config/config.php 中找到默认的配置文件。

您可以通过运行以下 Artisan 命令快速发布配置文件。

$ php artisan config:publish rcrowe/twigbridge

使用方法

您可以通过像调用任何其他视图一样调用 Twig 模板

// Without the file extension
View::make('i_am_twig', array(...))

TwigBridge 也支持其他包中的视图

View::make('pagination::simple')

在扩展另一个 Twig 模板时,上述规则继续适用

{% extend "parent" %}
{% extend "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/extensions.php 的 enabled 数组中添加一个要加载到 Twig 中的扩展列表。

'extensions' => array(
    'TwigBridge\Extensions\Example'
)

TwigBridge 支持字符串或闭包作为回调,因此您可以将 Assetic Twig 扩展实现如下

'extensions' => array(
    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_Debug
  • TwigBridge\Extension\Laravel\Auth
  • TwigBridge\Extension\Laravel\Config
  • TwigBridge\Extension\Laravel\Form
  • 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/extensions.php 文件以查看定义的函数/过滤器列表。您也可以添加自己的。

FacadeLoader

FacadeLoader 扩展允许您调用在 config/extensions.php 中配置的任何 facade。这使您的 Twig 模板与任何 Laravel 类以及任何其他类集成。

要使用 Laravel 集成(或任何其他别名类和方法),只需将您的 facade 添加到配置中,并以 URL.to(link)(而不是 URL::to($link))的方式调用它们

函数/过滤器/变量

以下辅助工具/过滤器是由默认扩展添加的。它们基于辅助工具和/或 facade,因此应该是自我解释的。

函数

  • asset, action, url, route, secure_url, secure_asset
  • auth_check, auth_guest, auth_user
  • config_get, config_has
  • form_*(所有 Form::* 方法,使用蛇形命名法)
  • html_*(所有 Html::* 方法,使用蛇形命名法)
  • input_get, input_old
  • link_to, link_to_asset, link_to_route, link_to_action
  • session_has, session_get, csrf_token
  • 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