mho79/twigextensions-bundle

此包已被废弃且不再维护。未建议替代包。

为您的 Symfony2 项目提供有用的 Twig 扩展。

安装: 662

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 15

类型:symfony-bundle

dev-master 2012-07-11 10:06 UTC

This package is not auto-updated.

Last update: 2018-06-29 09:29:19 UTC


README

TwigExtensionsBundle 只是我找到的一些有用的 Twig 扩展的集合。

可以在以下地址找到包含代码示例的实时演示:http://craue.de/sf2playground/en/CraueTwigExtensions/

此扩展应与 Symfony2 一起使用。

DecorateEmptyValueExtension

提供增强的 default 过滤器,craue_default,用于使用占位符装饰空值,甚至可以是 HTML。

通常,如果您想在 HTML 模板中使用 HTML,例如 HTML 实体 "—",作为默认过滤器的值,您必须做繁琐的操作才能使其正确渲染。使用此扩展,您可以写

{{ somevalue | e | default('—') | raw }}

而不是。

{{ somevalue | craue_default }}

ArrayHelperExtension

提供以下过滤器

  • craue_without 包装 PHP 的 array_diff 函数,
  • craue_replaceKey 添加/替换数组条目(其中键可以是变量),以及
  • craue_translateArray 将数组中的所有条目翻译。

FormExtension

提供一种机制,可以在一个页面上多次渲染表单。这是通过使用 craue_cloneForm 函数在渲染之前克隆表单来完成的。

StringHelperExtension

提供 craue_trailingDot 过滤器,确保文本以句点结尾。当使用供应商包的错误消息(例如验证)时,这很有用(这些错误消息被写成句子,但没有结尾的句点),同时使用您自己的错误消息(应包括结尾的句点)。

FormatDateTimeExtension

提供 craue_datecraue_timecraue_datetime 过滤器,用于对日期、时间和日期/时间值进行区域设置感知的格式化。

FormatNumberExtension

提供 craue_numbercraue_currencycraue_spellout 过滤器,用于对数字和货币进行区域设置感知的格式化。

ChangeLanguageExtension

提供辅助工具(函数 craue_languageName、全局 craue_availableLocales)和模板,用于实现语言更改机制。

安装

将 TwigExtensionsBundle 添加到您的 vendor 目录

通过使用 Git 子模块

git submodule add https://github.com/craue/TwigExtensionsBundle.git vendor/bundles/Craue/TwigExtensionsBundle

或者通过使用 deps 文件

[CraueTwigExtensionsBundle]
git=https://github.com/craue/TwigExtensionsBundle.git
target=bundles/Craue/TwigExtensionsBundle

将 TwigExtensionsBundle 添加到您的应用程序内核

// app/AppKernel.php
public function registerBundles() {
	$bundles = array(
		// ...
		new Craue\TwigExtensionsBundle\CraueTwigExtensionsBundle(),
	);
	// ...
}

注册 Craue 命名空间

// app/autoload.php
$loader->registerNamespaces(array(
	// ...
	'Craue' => __DIR__.'/../vendor/bundles',
));

通过更新您的配置使Twig扩展可用

// app/config/config.yml
craue_twig_extensions: ~

在您的Twig模板中使用扩展的示例

DecorateEmptyValueExtension

{{ someValueWhichMayBeEmpty | craue_default }}<br />
{{ someValueWhichMayBeEmpty | craue_default('no value') }}<br />
{{ someValueWhichMayBeEmpty | craue_default('&ndash;') }}<br />
{{ someValueWhichMayBeEmpty | craue_default(0) }}

ArrayHelperExtension

{{ anArray | craue_without(aValueOrAnArray) | join(', ') }}<br />
{{ ['red', 'green', 'yellow', 'blue'] | craue_without('yellow') | join(', ') }} will print "red, green, blue"<br />
{{ ['red', 'green', 'yellow', 'blue'] | craue_without(['yellow', 'black', 'red']) | join(', ') }} will print "green, blue"

{{ anArray | craue_replaceKey(key, value) | join(', ') }}<br />
{% set newKey = 'key3' %}
{{ {'key1': 'value1', 'key2': 'value2'} | craue_replaceKey(newKey, 'value3') | join(', ') }} will print "value1, value2, value3"

{{ anArray | craue_translateArray() | join(', ') }}<br />

FormExtension

{% for myEntity in myEntities %}
	{% set myFormInstance = craue_cloneForm(myForm) %}
	<form action={{ path('my_route', {'id': myEntity.getId()}) }} method="post" {{ form_enctype(myFormInstance) }}>
		{{ form_widget(myFormInstance) }}
		<input type="submit" />
	</form>
{% endfor %}

StringHelperExtension

{{ aString | craue_trailingDot }}<br />
{{ 'This text should end with a dot' | craue_trailingDot }}<br />
{{ 'This text should end with exactly one dot.' | craue_trailingDot }}

FormatDateTimeExtension

<h2>with the current locale</h2>
date: {{ someDateTimeValue | craue_date }}<br />
time: {{ someDateTimeValue | craue_time }}<br />
both: {{ someDateTimeValue | craue_datetime }}

<h2>with a specific locale</h2>
date: {{ someDateTimeValue | craue_date('de-DE') }}<br />
time: {{ someDateTimeValue | craue_time('de') }}<br />
both: {{ someDateTimeValue | craue_datetime('en-GB') }}

FormatNumberExtension

<h2>with the current locale</h2>
thousands separator: {{ someNumber | craue_number }}<br />
default currency: {{ someNumber | craue_currency }}<br />
specific currency: {{ someNumber | craue_currency('EUR') }}<br />
spelled out number: {{ someNumber | craue_spellout }}

<h2>with a specific locale</h2>
thousands separator: {{ someNumber | craue_number('de-DE') }}<br />
default currency: {{ someNumber | craue_currency(null, 'de-DE') }}<br />
specific currency: {{ someNumber | craue_currency('EUR', 'de-DE') }}<br />
spelled out number: {{ someNumber | craue_spellout('de-DE') }}

ChangeLanguageExtension

提供了一个Twig模板,您可以使用它来渲染一个“更改语言”菜单,如下所示

{% include 'CraueTwigExtensionsBundle:ChangeLanguage:changeLanguage.html.twig' %}

这将渲染指向当前路由的所有定义语言的链接列表。将其包裹在div中,以便通过CSS进行样式化。如果您想自定义它,请查看模板。

设置/覆盖默认值

DecorateEmptyValueExtension

; app/config/parameters.ini
craue_twig_extensions.decorateEmptyValue.placeholder="&ndash;"

FormatDateTimeExtension

; app/config/parameters.ini
craue_twig_extensions.formatDateTime.datetype="full"
craue_twig_extensions.formatDateTime.timetype="short"

FormatNumberExtension

; app/config/parameters.ini
craue_twig_extensions.formatNumber.currency="EUR"

ChangeLanguageExtension

; app/config/parameters.ini
craue_twig_extensions.changeLanguage.availableLocales[]="de"
craue_twig_extensions.changeLanguage.availableLocales[]="en"
craue_twig_extensions.changeLanguage.availableLocales[]="ru"
craue_twig_extensions.changeLanguage.showForeignLanguageNames=true
craue_twig_extensions.changeLanguage.showFirstUppercase=false

例如,您还可以使用XML来更具体地设置区域键

<parameter key="craue_twig_extensions.changeLanguage.availableLocales" type="collection">
	<parameter key="de_DE">de</parameter>
	<parameter key="en">en</parameter>
	<parameter key="ru">ru</parameter>
</parameter>

高级内容

别名

可选地,您可以为项目中使用的所有提供的过滤器/函数/全局变量定义别名。这允许您使用您喜欢的名称而不是预定义的名称。例如,如果您不喜欢总是写

{{ somevalue | craue_default }}

,您可以为craue_default过滤器定义别名"d",这样您就可以在您的Twig模板中这样写

{{ somevalue | d }}

。但请注意,不要意外地覆盖内置的过滤器/函数/全局变量,尽管您可以有意为之。

DecorateEmptyValueExtension

; app/config/parameters.ini
craue_twig_extensions.decorateEmptyValue.filterAlias="d"

ArrayHelperExtension

; app/config/parameters.ini
craue_twig_extensions.arrayHelper.withoutAlias="without"
craue_twig_extensions.arrayHelper.replaceKeyAlias="replaceKey"
craue_twig_extensions.arrayHelper.translateArrayAlias="translateArray"

FormExtension

; app/config/parameters.ini
craue_twig_extensions.form.cloneFormAlias="cloneForm"

StringHelperExtension

; app/config/parameters.ini
craue_twig_extensions.stringHelper.trailingDotAlias="trailingDot"

FormatDateTimeExtension

; app/config/parameters.ini
craue_twig_extensions.formatDateTime.dateFilterAlias="date"
craue_twig_extensions.formatDateTime.timeFilterAlias="time"
craue_twig_extensions.formatDateTime.dateTimeFilterAlias="datetime"

FormatNumberExtension

; app/config/parameters.ini
craue_twig_extensions.formatNumber.numberFilterAlias="number"
craue_twig_extensions.formatNumber.currencyFilterAlias="currency"
craue_twig_extensions.formatNumber.spelloutFilterAlias="spellout"

ChangeLanguageExtension

; app/config/parameters.ini
craue_twig_extensions.changeLanguage.languageNameAlias="languageName"
craue_twig_extensions.changeLanguage.availableLocalesAlias="availableLocales"

仅启用特定扩展

默认情况下,所有提供的扩展都已启用。如果您只使用一个或其中一些,可能希望禁用其他扩展。以下命令将启用所有扩展,因此请删除您不需要的扩展。

// app/config.yml
craue_twig_extensions:
  enable_only:
    - ArrayHelperExtension
    - ChangeLanguageExtension
    - DecorateEmptyValueExtension
    - FormatDateTimeExtension
    - FormatNumberExtension
    - FormExtension
    - StringHelperExtension