0

ZendFrameworkは初めてです。現在私がやろうとしているのは、ユーザーが私のWebサイトにアクセスすると、最初に英語とドイツなどの2つの言語を選択できる選択ボックスが表示されることです。

それらが選択を行った場合にのみ、ブラウザはそれらをその特定の言語ページのインデックスコントローラにリダイレクトします。

だから私の質問は、ブートストラップファイルで選択ボックスを作成する方法、またはそれを行うためのあらゆる種類の可能な方法と、その後にユーザーをリダイレクトする方法ですか?どんな解決策も大歓迎です!

4

2 に答える 2

0

preDispatchイベントを使用して、言語が選択されているかどうか(Cookieまたはセッションに保存されているなど)を確認し、選択されていない場合はランディングページにリダイレクトするプラグインを作成できます。

zendフレームワークプラグイン-predispatch() とZFのアクションプラグインのドキュメントをご覧ください。

これが、アプリに強制的にログインするために行うことです。

今、あなたの立場で私が実際に行うことは、英語へのフォールバックとナビゲーションバーのどこかにあるスイッチウィジェットを使用してユーザーの言語を検出することです。

于 2012-06-25T10:27:11.937 に答える
0

この種の操作には、ブートストラップファイル(との両方について話している)をBootstrap.php使用しないでください。index.phpまず、それはあなたが求めるようには機能しません。次に、アプリの構造を大いに台無しにします。

代わりに、次のいずれかのアプローチを使用できます。

1)ユーザーのCookieをチェックして、選択が既に行われたかどうかをチェックするディスパッチ前フックを追加します。そうである場合は、通常どおりリクエストを続行します(おそらく、後で使用するZend_Registrylang変数を設定します)。そうでない場合は、言語選択ページにリダイレクトします。後者は、Cookieで行われた選択を保存する必要があります。

2)Router / mod_rewriteに簡単なルールを実装します。要求されたURLに「言語部分」(http://example.com/lang/xx/...または単にhttp://example.com/xx/...)が含まれている場合、自動的にこの部分を使用するため、langパラメータを設定します。そうでない場合、リクエストは自動的に言語選択ページにリダイレクトされます。後者は、ユーザーを言語固有のページに導き、そこですべてのリンクが言語固有になります。

私の意見では、後者のアプローチは、ユーザーが常に言語調整されたゲートウェイを使用する必要があるため、劣っています。ただし、この情報をCookieに保存する必要はありません。

于 2012-06-25T10:33:43.423 に答える