1

ユーザーの好みに応じて、ページ内で異なる通貨を使用したいと考えています。ユーザーはデフォルトの通貨を GBP、EUR、または USD に設定できます。しかし、すべてのページはすでに GBP で価格が書かれています'£'

問題にアプローチする方法がわかりません。最初に、またはそのようなものでレンダリングする直前にページのコンテンツを取得し、preDispatch()それを変更してから、変更されたビューをレンダリングします。コントローラー内でビューを取得できますが、オブジェクトのようにしか取得できません。もう 1 つの問題は、コントロール パネルからもオファーを書き込んでいて、それらがビュー オブジェクトに含まれていないことです。var_dump($view);ビューはオブジェクトですが、コントロール パネルからのオファーは、通常の HTML と同じように画面に表示されます。

作成したすべてのページを編集したくありませんでした。とても手間がかかります。ヘルパーも見ましたZend_Currencyが、その状況では仕方ないと思います。問題を解決する方法について何か提案はありますか?

4

4 に答える 4

1

肯定: ユーザーの好みに基づいて通貨を変更する場合、他のコンテンツもわずかに変更される可能性があると思います。基本的に、ユーザーに許可しているのは、ロケールを特定のものに合わせることです。

getTranslationList() を使用すると、いくつかのタイプのローカライズされた情報にアクセスできます。これらの情報は、ローカライズされたデータを翻訳せずに顧客に表示する場合に役立ちます。それらはすでに利用可能です。

次のコードは、使用できるロケール設定のトンを提供します (この投稿の下部にあるリンクを真剣に確認してください)。

$list = Zend_Locale::getTranslationList('language', 'de_AT');
print_r ($list);

最も重要なのは、取得できる値の一部です。

  • 通貨記号
  • 名前から通貨へ
  • CurrencyToName
  • 通貨丸め
  • 通貨分数
  • 通貨対地域
  • RegionToCurrency

参照: http://framework.zend.com/manual/1.11/en/zend.locale.functions.html#zend.locale.getdata

于 2012-07-06T17:50:00.443 に答える
1

後処理でこれを行いたくありません。代わりに、ユーザーのロケールを反映するために通貨を出力するときにビュー ヘルパーを使用します。

于 2012-07-06T17:40:35.253 に答える
1

ビューにフィルターを追加できます。Matthew Turland によるこの記事では、プロセスについて説明し、例を示しています。

ビル・カーウィンによる回答を特徴とするこの質問も参照してください。

そうは言っても、それを行うためのより良い方法は、おそらくZend_Locale最初から正しい出力を生成するために使用することです。ただし、出力が既に作成された後、ただしクライアントに送信される前にフィルターを追加することは、特定の状況に対処する方法のように思えます。

于 2012-07-07T15:58:14.403 に答える
0

私は Zend Framework の内部に精通していませんが、出力バッファーを使用して、実際に結果をレンダリングする関数をオーバーライドしてから、バッファーの内容をオーバーライドできるはずですstr_replace。おそらく、特にエレガントなソリューションではありません。

于 2012-07-06T17:40:26.907 に答える