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