2

baseUrlsはほとんどの場合zendプロジェクトで自動的に設定され、サブフォルダーからアプリを実行するときに便利ですが、ルートpublicフォルダーからserver-nameを使用してアプリを実行していますmyzend.loc

したがって、echo $this->baseUrl()またはを実行するvar_dump($this->baseUrl())と、空の文字列が取得されます''。これは正常であり、サブフォルダーからアプリを実行しなかった結果ですか?または、baseUrlを手動で設定しますか。例えば$request->getHelper('baseUrl')->setBaseUrl($_SERVER['SERVER_NAME']);

4

3 に答える 3

2

$this->baseUrl()zend フレームワークによって設定されます。設定する必要はありません。空の baseurl を取得する理由は、apache の httpd.conf にあります。仮想ホストのドキュメントルートは、プロジェクト ディレクトリに設定されます。

DocumentRoot "/usr/local/apache2/docs/yourproject"

于 2013-02-28T11:11:07.683 に答える
2

名前にもかかわらずbaseUrl、URL ではなく絶対パスを返します。空の文字列を返すことは、サブフォルダーに存在しない通常の ZF プロジェクトに期待されることです。

于 2013-03-03T12:13:04.353 に答える
2

簡単な答えは、仮想 Web ホストのルートにあるサイトを提供する ZF1 アプリで、次の空の文字列も取得することです。

Zend_Controller_Front::getInstance()->getBaseUrl()

@TimFountainが指摘しているように、それ自体では、httpまたはhttpsプロトコルプレフィックスで完全な真のURLを返しません。そのため、URL ではなくファイル パスとして解釈できます。しかし、これはむしろ相対ファイル パス、つまりドキュメントルートからの相対パスです。

そして、もちろん、baseUrlプロトコル プレフィックスを付けた実際の URL として設定すると、すべての解釈が無効になり、設定した内容が返されるだけです。

baseUrl()また、に実装されているビュー ヘルパーについて次の 2 つの点に注意する必要がありZend_View_Helper_BaseUrlます。

  1. 上記のフロントコントローラーgetBaseUrl()方式を使用します。

  2. 議論が必要です!

(2)については、私の経験では、多くの人がbaseUrl()ビューヘルパーを次のように使用しています(たとえば、ビュースクリプトで):

<?php echo $this->baseUrl() . '/assets/css/styles.css'; ?>

しかし、次のように書くとより簡潔になります。

<?php echo $this->baseUrl('/assets/css/styles.css'); ?>

私にとって、それは単にいくつかの余分な文字の問題ではありません. アプリのコアは、自身の内部構造を知っている必要がありますが、展開の詳細は知りません。このようにbaseUrl()ビュー ヘルパーを使用すると、デプロイメントに依存しない内部アセット参照をデプロイメント後の対応するアセットに解決するために必要なデプロイメント対応マッピングが存在することが暗黙的に認識されます。

于 2013-03-03T15:12:16.270 に答える