1

ISO-8859-1 文字セットを使用する ZF1 に基づくレガシー プロジェクトに取り組んでいます。また、サーバーのデフォルトのエンコーディングは ISO です。新しいモジュールは、ZF2 を使用して実装する必要があります。エスケーパーなどのデフォルトのエンコーディングを、ZF2 で UTF-8 以外にグローバルに設定するにはどうすればよいですか?

4

1 に答える 1

1

モジュールで直接エスケープを使用する場合、これは問題になります。ビューヘルパーのみを使用する場合は、エンコーディングを設定するオプションがあります。

すべてのエスケープビューヘルパー(EscapeCssなどEscapeHtml)は、から拡張されますZend\View\Helper\Escaper\AbstractHelper。このクラスにはメソッドがありsetEncoding()ます。エンコーディングはすべてのヘルパーインスタンス間で共有されるわけではないため、個別に設定する必要がありますが、そこでエンコーディングを設定できます。

たとえば、ブートストラップ中に正しいエンコーディングを設定できます。アプリケーションモジュールがあるとします。

<?php

namespace Application;

use Zend\Mvc\MvcEvent;

class Module
{
  public function onBootstrap(MvcEvent $e)
  {
    $app = $e->getApplication();
    $sm  = $app->getServiceManager;

    $manager  = $sm->get('ViewHelperManager');
    $plugins  = array(escapehtml', 'escapehtmlattr', 'escapejs', 'escapecss', 'escapeurl');
    $encoding = 'ISO-8859-1';

    foreach ($plugins as $name) {
      $plugin = $manager->get($name);
      $plugin->setEncoding($encoding);
    }
  }
}

これにより、すべてのプラグインがISO-8859-1エンコーディングに修正されます。モジュールのいずれか、またはサードパーティのモジュールでエスケープビューヘルパーを使用する場合は、ISO-8859-1エンコーディングが使用されます。

于 2012-10-18T09:27:53.147 に答える