Intl extension是Twig的扩展程序,可添加localizeddate
,localizednumber
和localizedcurrency
过滤器。如何安装和设置扩展程序,以便在Twig模板中使用这些过滤器?
答案 0 :(得分:56)
首先,您需要PHP intl extension,因为Twig扩展程序是基于此构建的。如果未启用PHP intl扩展,Twig Intl扩展将抛出异常。 Installation instructions可以在官方PHP文档中找到。
在Ubuntu / Debian机器上,这就像运行以下命令一样简单:
sudo apt install php-intl
在Windows机器上,您可能必须取消注释php.ini中的以下行:
extension=php_intl.dll
对于CentOS或其他架构,请按照here的说明操作。请注意,CentOS需要安装PECL和GCC C ++编译器:yum install php-pear
和yum install gcc-c++
。
将扩展名添加到php.ini后,重新启动Web服务器。
接下来,您将需要Twig Extensions包(其中包含Intl扩展名),可以使用Composer进行安装。在命令行中运行此命令:
composer require twig/extensions
这会将依赖项添加到composer.json
并下载。
注意:版本1.2.0中引入了localizednumber
和localizedcurrency
过滤器,因此如果要使用它们,至少需要该版本。
如果您直接使用Twig(即不在Symfony项目中),请手动将扩展名添加到Twig环境中:
<?php
use Twig\Environment;
use Twig\Extensions\IntlExtension;
$twig = new Environment($loader);
$twig->addExtension(new IntlExtension());
如果您使用的是Symfony应用程序,可以通过创建服务并将其标记为config/services.yml
中的Twig扩展名来将扩展名添加到Twig:
services:
twig.extension.intl:
class: Twig\Extensions\IntlExtension
tags:
- { name: twig.extension }
<?php
Locale::setDefault('nl-NL');
在config/framework.yaml
中,取消注释default_locale
设置:
framework:
default_locale: en
答案 1 :(得分:0)
在Symfony 3/4/5中,启用了自动配置功能,就像将扩展注册为服务一样简单:
yourmodulename/graph/model
答案 2 :(得分:-1)
安装扩展名后,如果发现以下错误: 试图从全局名称空间中加载类“ IntlTimeZone”。您是否忘记了“使用”声明? 只需在文件中编辑第54行:
vendor/twig/lib/Twig/Extensions/Extension/Intl.php
并将其替换为:
if (PHP_VERSION_ID < 50500 || !class_exists('IntlTimeZone')) {
对我有用。