1

MVC アプリケーションに Zend Framework を使用しています。

ビューでベース URL が必要な場合は、常に""(空の文字列) が返されます。私のコントローラで を使用する$this->getRequest()->getBaseUrl()と、正しいベース URL が返されます。

index.dev.php例として、私は(production is index.php);を通じて開発アプリケーション環境を使用しています。本番環境では、すべての URL""が baseUrl で始まることを期待していますが、開発環境では、index.dev.php を使用して、すべての URL が で始まることを期待しています"/index.dev.php"

前に言ったように、ビューのbaseUrl()ヘルパーは、開発環境であっても空の文字列を返します。ただし$this->getRequest()->getBaseUrl()、同じ環境で使用すると、正しいベース URL が返されます。

これを解決するために、すべてのビューの$this->baseUrl()呼び出しをに変更し、$this->baseUrlこのビュー変数をカスタム ベース コントローラー クラスで定義しました。しかし、これは私が期待する解決策ではありません。

これはモジュラー アプリケーションであり、ブートストラップ時に次のように追加されたルートを使用しています。

protected function _initRoutes(){

    $objFrontController = Zend_Controller_Front::getInstance();
    $objRouter = $objFrontController->getRouter();

    $arrAppRoutes = Service_Route::getAllActiveApplicationRoutes();

    if( is_array($arrAppRoutes) && count($arrAppRoutes) > 0 ){

        $objRouter->addRoutes($arrAppRoutes);

        // Add the default routes in the end
        $objRouter->addDefaultRoutes();
    }
}

これらのルートはすべてZend_Controller_Router_Routeクラスのインスタンスであり、次のようにビューで使用すると、$this->url(array(), 'admin_dashboard');常にbaseUrl正しいです (baseUrlビュー var ソリューションを使用する前であっても)。

誰かがこれについて知っているなら、助けてください。私のアプリケーションのセットアップに関する詳細情報が必要な場合は、できる限り提供します。

編集

実際には、問題があるようです: 空の文字列baseUrlは、ビューに JS および CSS スクリプトを含めて正常に動作します。しかし、Ajax を使用する必要がある場合があり/index.dev.php、アプリケーション環境を維持するためにベース URL にその部分が必要です。この最後の部分が同じ質問にあるのか、新しい質問にあるのかわかりません。

4

1 に答える 1

0

ビュー内の baseUrl はスクリプト名を削除するため、追加する$_SERVER['SCRIPT_NAME']と修正されるはずです。

于 2012-05-31T20:27:27.963 に答える