web-dev-qa-db-ja.com

TwigのIntl拡張機能をインストールする方法

Intl extension は、Twigの拡張で、localizeddatelocalizednumberlocalizedcurrencyフィルターを追加します。 Twig=テンプレートでこれらのフィルターを使用できるように拡張機能をインストールして設定できますか?

24
julestruong

PHP intl拡張モジュールをインストールします

まず、 PHP intl extension が必要になります。これは、Twig拡張機能がその上に構築されているためです。Twig PHP intl拡張が有効になっていない場合、Intl拡張は例外をスローします。 インストール手順 は公式の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をインストールする

次に、Composerを使用してインストールできる Twig Extensions パッケージ(特にIntl拡張を含む)が必要になります。コマンドラインで次のコマンドを実行します。

composer require twig/extensions

これにより、依存関係がcomposer.jsonに追加され、ダウンロードされます。

注:localizednumberおよびlocalizedcurrencyフィルターはバージョン1.2.0で導入されたため、それらを使用するには少なくともそのバージョンが必要です。

Twigに拡張機能を追加する

Twigを直接使用する場合(つまり、Symfonyプロジェクトではない場合)、Twig環境に手動で拡張機能を追加します。

<?php

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

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

拡張機能をTwig(Symfonyで)に追加する

Symfonyアプリケーションを使用している場合、サービスを作成し、それをTwig内のconfig/services.ymlの拡張機能としてタグ付けすることにより、拡張機能を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
57
Nic Wortel

拡張機能のインストール後、次のエラーが見つかった場合:グローバル名前空間からクラス「IntlTimeZone」をロードしようとしました。 「使用」ステートメントを忘れましたか?ファイルの54行目を編集するだけです:

    vendor/twig/lib/Twig/Extensions/Extension/Intl.php

それを次のように置き換えます。

if (PHP_VERSION_ID < 50500 || !class_exists('IntlTimeZone')) {

それは私のために働いた..

0
Suhaib Ahmad