0

「独自の」「フレームワーク」から Doctrine2 と一緒に Zend Framework (1.11.11) に PHP アプリケーションを移植しています。アプリケーションがオランダ語とドイツ語の 2 つの言語で利用できることを除けば、これはすべてうまくいきました。2 つの URL にアクセスできるようにする方法を探しています。

正規表現ルートでこれを試しましたが、アセンブル時に「ページ」パラメーターを常に指定する必要があるため、うまくいきません。

resources.router.routes.viewreviews.type = "Zend_Controller_Router_Route_Regex"
resources.router.routes.viewreviews.route = "(klantbeoordelingen|kundenbewertung)[/]?([0-9]*)"
resources.router.routes.viewreviews.reverse = "%s/%d"
resources.router.routes.viewreviews.defaults.module = "default"
resources.router.routes.viewreviews.defaults.controller = "review"
resources.router.routes.viewreviews.defaults.action = "index"
resources.router.routes.viewreviews.map.name = 1
resources.router.routes.viewreviews.map.page = 2

要点は、今は不可能なページ パラメータを無視できるようにする必要があるということです。ただし、2 つの正規表現ルートを作成することはできますが、それは良い方法ではありません。なぜなら、ほとんど同じように見える多くのルートを取得するからです。

URL に言語が含まれていないため、連鎖ルートを探しているわけではないと思います。言語は、アクセスしているドメイン名 (.nl または .de) によって定義されます。

何かアイデアはありますか?チップ?

4

1 に答える 1

1

いくつかの研究の後、解決策があります。私がしたことは次のとおりです。

  • routes.xml ファイルでルートを書き直しました。例:

    <viewreviews>
        <type>BestBuy_Router_Route</type>
        <route>@klantbeoordelingen/:page</route>
        <translate>klantbeoordelingen</translate>
        <defaults>
            <module>default</module>
            <controller>review</controller>
            <action>index</action>
            <page>0</page>
        </defaults>
    </viewreviews>
    

ルート構成の @ に注意してください。これにより、翻訳されます。次に、意味のない (ZF 用の) タグ 'translate' を追加して、Poedit によって取得されるようにします。

  • .po ファイルを編集し、poedit で次のことを行います。poedit および xml ファイル

  • 次に、poedit を使用して XML ファイルをクロールすると、タグが検出され、翻訳するよう質問されます。

  • これらを翻訳したら、正しいトランスレータがルーターに設定されていることを確認してください。独自に作成した frontcontroller プラグインの routeStartup サイクルでこれを行います。

        Zend_Controller_Router_Route::setDefaultLocale($translate->getLocale());
        Zend_Controller_Router_Route::setDefaultTranslator($translate);
    

$translate は Zend_Translate オブジェクトです。

これはうまくいくはずです。変換されたルートは Zend_Controller_Router_Routeでのみ機能します。私はこのクラスを拡張し、(BestBuy_Router_Route) を改善しました。なぜなら、すべてのルートを小文字で組み立てたいからです。

乾杯!

于 2012-10-08T09:00:37.027 に答える