Intl расширение это расширение для Twig, которое добавляет localizeddate
, localizednumber
а также localizedcurrency
фильтры. Как я могу установить и настроить расширение, чтобы использовать эти фильтры в своих шаблонах Twig?
Прежде всего, вам понадобится Расширение intl PHP, поскольку расширение Twig построено поверх этого. Расширение Twig Intl вызовет исключение, если расширение intl PHP не включено. Инструкция по установке можно найти в официальной документации PHP.
На компьютерах с Ubuntu / Debian это так же просто, как выполнить следующую команду:
sudo apt-get install php5-intl
На компьютерах с Windows вам, вероятно, придется раскомментировать следующую строку в php.ini:
extension=php_intl.dll
Для CentOS или других архитектур следуйте инструкциям Вот. Обратите внимание, что CentOS требует, чтобы PECL и компилятор GCC C ++ были установлены: yum install php-pear
а также yum install gcc-c++
,
Как только расширение будет добавлено в php.ini, перезапустите веб-сервер.
Затем вам понадобится пакет Twig Extensions (который среди прочего содержит расширение Intl), который можно установить с помощью Composer. Запустите эту команду в командной строке:
composer require twig/extensions ^1.2
Это добавит зависимость к вашему composer.json
и скачать его.
Обратите внимание localizednumber
а также localizedcurrency
Фильтры были введены в версии 1.2.0, поэтому вам нужна как минимум эта версия, если вы хотите их использовать.
Если вы используете Twig в простом PHP-проекте, вы можете добавить расширение, используя addExtension()
метод.
$twig = new Twig_Environment($loader);
$twig->addExtension(new Twig_Extensions_Extension_Intl());
Если вы используете приложение Symfony, вы можете добавить расширение к Twig, используя конфигурацию сервиса в app/config/services.yml
:
services:
twig.extension.intl:
class: Twig_Extensions_Extension_Intl
tags:
- { name: twig.extension }
Locale::setDefault('nl-NL');
редактировать app/config/config.yml
:
parameters:
locale: nl
После установки расширения, если вы обнаружите следующую ошибку:
Попытка загрузить класс «IntlTimeZone» из глобального пространства имен. Вы забыли заявление об использовании?
Просто отредактируйте строку 54 в файле:
vendor/twig/lib/Twig/Extensions/Extension/Intl.php
и заменить его на:
if (PHP_VERSION_ID < 50500 || !class_exists('IntlTimeZone')) {
Это сработало для меня ..