如何安装Twig的Intl扩展

时间:2014-09-20 12:39:47

标签: php twig intl twig-extension

Intl extension是Twig的扩展程序,可添加localizeddatelocalizednumberlocalizedcurrency过滤器。如何安装和设置扩展程序,以便在Twig模板中使用这些过滤器?

3 个答案:

答案 0 :(得分:56)

安装PHP intl扩展

首先,您需要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-pearyum install gcc-c++

将扩展名添加到php.ini后,重新启动Web服务器。

安装Twig Extensions

接下来,您将需要Twig Extensions包(其中包含Intl扩展名),可以使用Composer进行安装。在命令行中运行此命令:

composer require twig/extensions

这会将依赖项添加到composer.json并下载。

注意:版本1.2.0中引入了localizednumberlocalizedcurrency过滤器,因此如果要使用它们,至少需要该版本。

将扩展名添加到Twig

如果您直接使用Twig(即不在Symfony项目中),请手动将扩展名添加到Twig环境中:

<?php

use Twig\Environment;
use Twig\Extensions\IntlExtension;

$twig = new Environment($loader);
$twig->addExtension(new IntlExtension());

将扩展名添加到Twig(在Symfony中)

如果您使用的是Symfony应用程序,可以通过创建服务并将其标记为config/services.yml中的Twig扩展名来将扩展名添加到Twig:

services:
    twig.extension.intl:
        class: Twig\Extensions\IntlExtension
        tags:
            - { name: twig.extension }

设置默认语言环境

<?php

Locale::setDefault('nl-NL');

在Symfony中设置默认语言环境

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')) {

对我有用。