2011-07-21 3 views
1

アプリケーションルートにパブリックパスを提供する定数または変数を探しています。CakePHP - アプリケーションルートへのパブリックパスを取得する方法

私は今までを与えているFULL_BASE_URLまで持っていますが、私のアプリケーションがサブディレクトリ(例えばhttp://www.example.com/myapp/)に追加されているという問題があります。

コントローラにhttp://www.example.com/myapp/のようなパスを取得する方法はありますか?一般的に

答えて

8

$this->Html->url('/', true);

あなたは、ルータは、HtmlHelperの::リンクで使用される静的なクラスですhttp://book.cakephp.org/view/1448/url

+0

私は、これは私のコントローラでのリダイレクトのためのURLを取得することです言及するのを忘れてしまいました。そこにHtmlHelperを使うのは悪い習慣だと思いますか? – BadHorsie

+0

リダイレクトのベースURLは必要ありません。ちょうど '$ this-> redirect( '/ controller/action');' – JJJ

+1

申し訳ありませんが、私はこの質問の詳細をちょっと説明しました!実際にはリダイレクトではなく、ユーザーをサイトに誘導する電子メールテンプレートのリンク用のものでした。私はそれがHtml-> link()の中で言ったように、Html-> url()を使って動作させることができました。ありがとう。 – BadHorsie

0
<?php 
    ... 
    $this->redirect(Router::url("/", true)); 
    ... 
?> 

を参照して、その機能を持つすべてのリンクを生成する必要がありますコントローラ::リダイレクトなど。Router :: urlメソッドは、文字列または配列をとり、それをルートにマッチさせます。次に、ルート情報と一致したURLを文字列として返します。

"/"をRouter :: url呼び出しに渡すと、アプリケーションのルートへの相対リンクが得られます。 Router :: url呼び出しに "/"とtrueを渡すと、結果の相対パスに完全なBASE_URLが付加されます。これはあなたに必要なものを与えるはずです。そうでない場合、ここにルータのドキュメントへのリンクがあります。 2番目のブール値のパラメタを試してみてください - あなたが読んだもの/自分のテストに応じて期待どおりに動くかもしれません。

http://api.cakephp.org/class/router#method-Routerurl