2009-08-26 17 views
6

このWebサイトwww.fltdata.comを参照してください。何らかの理由で、ホームページを指すのではなく、それは、現在のページを指してそれは私のローカルホスト上で正常に動作しますが、オンラインのは、このように振る舞うホームリンクのhrefの値がちょうどである:。。の$ this - > baseUrlに()

いただきました間違ってここに...

:===編集===

さて、私は以下の通りであるヘルパーを作成しました

これは私が$ this-> baseUrlを呼び出すたびに呼び出されていると思います。これは問題になるかもしれませんが、ローカルホストでもオンラインでなくても問題なく動作しますが、何らかの設定上の問題でなければなりません。

答えて

15

あなたのZFセットアップとe.hの詳細を知らなくても、ここで何がうまくいかないのか分かりにくいです。 url-rewriting-setupを実行します。 Zend_Controller_Request_Http::getBaseUrl()の背後にあるロジック - これはZend_View_Helper_BaseUrl::baseUrl()への呼び出しが、baseUrlがフロントコントローラに明示的に設定されていない場合に呼び出される場所です - 非常に複雑で、4つの異なるサーバー変数(現在の要求URIを決定するプロセスの一部) 。

この問題を解決する最も簡単な方法は、ブートストラップのフロントコントローラにbaseUrl(サーバールートからの相対パス)を設定することです。あなたは-bootstrapping新しいZend_Applicationを使用している場合あなたは自分の構成に

resources.frontController.baseUrl = "/subdir" 

を追加する必要があります。

EDIT

あなたのヘルパーは、多かれ少なかれ、ZFに同梱のオリジナルbaseUrl -helperに似ています。元のものもZend_Controller_Front::getBaseUrl()に代理されます。どのバージョンのZFを使用しますか?あなたが出荷されたbaseUrl - ヘルパーを使用しない理由はありますか?

baseUrlをブートストラップに明示的に設定しようとしましたか?

+0

は、私は:(の非常に気づいていないんだZendの上で多くのことをtheresの - 私は私のヘルパー関数を掲載 - そこに何か間違っている – Ali

+0

実は私はチュートリアルと、次のでしたか?私はブートストラップファイルにbaseUrlを設定しているとは思えません。 – Ali

+0

baseUrlを明示的に設定しようとしましたか?結果はどうですか? 出荷されたbaseUrlヘルパーを試しましたか?結果は何ですか? –

6

私は通常、ベースURLの構成オブジェクトを使用して、生成部

の下で、私はこれを持っているのconfigs /のapplication.iniに公開/ index.phpを

$config = new Zend_Config_Ini(
     APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV); 
    $baseUrl = $config->baseHttp; 
    define('BASE_URL', $baseUrl);` 

にindex.phpを でそれを定義します

[production] 
baseHttp       = "http://whatever.net" 

この方法で、私が今まで開発効率向上に異なるベースURLを使用する必要がある場合、私はちょうど私があなたが畳み込まれ取得しないBASEURLをしたい場合、それはでラップよりも簡単なアプローチだと思う個人的にbaseHttpためdiiferent変数を追加することができますそれ自身のクラス。時にはOOPがあまりにも多くのOOPです。さらに、インストールプログラムの管理がより簡単になります。 $ _SERVER変数を取得してホスト名を取得し、http://

2

私のビューで$ this-> baseUrlを使用した場合、同様の問題が発生しました。私はこれを使用して私に現在のページのURLを与えることがわかった:

baseUrl; ?> "> http://www.yourwebaddress.com/current-page

、これは私に関係なく、現在のページの本当のBASEURLを与えるだろう(スラッシュは、URLの末尾に追加注意)

baseUrlに;?> /"> http://www.yourwebaddress.com/

4

Zend Frameworkは、 $ this-> baseUrl()を呼び出した後にスラッシュを使用していないため、常に現在のページを返します。

問題を解決するには、 $ this-> baseUrl()を呼び出した後にスラッシュを追加します。


正しい方法

<a href="<?php echo $this->baseUrl() . "/"; ?>">Home Link</a> 

または

あなた」のページへのリンクで最後のスラッシュの結果を省略
<a href="<?php echo $this->baseUrl(); ?>/">Home Link</a> 

:そうのようなあなたのビューで現在視聴中です。

誤った道

<a href="<?php echo $this->baseUrl(); ?>">Home Link</a> 
関連する問題