2012-02-22 17 views
5

はのためのいくつかの適切なZendの方法はありますアプリケーションのURLを取得し、公共のパスを取得:Zend Frameworkの:

a)は実際に私は/ publicディレクトリ

b)は受信アプリケーションのURL

へのパスを受けましたControllerで定義されたメソッドを使用していますが、終了したらすぐに準備ができたメソッドを使用することができます。

protected function _getApplicationUrl() { 
    return $_SERVER['SERVER_NAME']; 
} 

protected function _getPublicPath() { 
    return realpath(APPLICATION_PATH . '/../public/'); 
} 

答えて

6

アプリケーションURLについて、Zend_Controller_Request_HttpgetRequestUri()方法を有するが、意図的(および多少イライラ)は、URLのスキームとホスト名の部分を除外する。私のアプリでは、ブートストラップに$_SERVER['HTTP_HOST']をつかんでレジストリに格納して、後で完全なURLを構築するときに使用できるようにしました。

メモリからは、いいえ、publicフォルダの場所を取得するための組み込みメソッドはありませんが、コードは問題ありません。私が見たほとんどのアプリケーションdefine()index.phpのすべてのパスは少し安全です(パス名がより早く設定され、絶対的に不変になるためです)。これまでのところ少し速いですが、マイクロ最適化についての議論には参加できません! ZF /公衆に:-)

3

1)仮想ホストのポイントの場合は、ビューでは、そうでない場合は、独自のヘルパーを作成し、それを使用するコントローラ$this->view->baseUrl();でヘルパーメソッド$this->baseUrl();でパスを取得することができます。コントローラ$this->getRequest()->getHttpHost();

+0

'$ this-> getRequest() - > getHttpHost();'のUpvoteです。 – HPM

+0

'getHTTPPost()'を使用するために含まれるクラスは何ですか? – Kuttoozz

0
protected function _getPublicPath() { 
    chdir(APPLICATION_PATH); 
    return realpath("../public"); 
} 
1

A)/ publicディレクトリ内蔵のphp-機能getcwd()ます。あなたのサイトホストのフォルダ(例へのパスを提供します

へのパスを受けて 2)。 output "/home/my_cp/public_html/my_site.loc/www")。そして、あなたはあなたが望むどんな道をも構築することができます。