ほとんどのWebアプリケーションでは、グローバル変数base_urlが必要です。 base_urlを取得するcakephpでは、現在、app_controller.phpのbeforeRenderメソッドに次のコードを配置します
function beforeRender(){
$this->set('base_url', 'http://'.$_SERVER['SERVER_NAME'].Router::url('/'));
}
代替手段はありますか?これはベースURLを取得するためにこれよりも利用可能なグローバル変数がありますか?
はいあります。あなたの見解では、あなたはアクセスすることができます:
<?php echo $this->webroot; ?>
また、ホスト情報は$_SERVER['HTTP_Host']
変数は、必要に応じて。
コントローラーで、完全なURLが必要な場合は、これを使用します。
Router::url('/', true);
以下の誰でもオプションを使用
<?php echo $this->Html->url('/');?>
<?php Router::url('/', true); ?>
_<?php echo $this->base;?>
_
_<?php echo $this->webroot; ?>
_
Config/core.phpでdefine("BASE_URL", "www.yoursite.com/");
として定数を定義し、プロジェクトのどこでも_BASE_URL
_を使用します
そして、以下の機能を持つ共通ヘルパーを作成します
_<?php
class CommonHelper extends AppHelper {
function get_url($url){
return BASE_URL.$url;
}
function get_src($url){
echo BASE_URL.$url;
}
}
?>
_
プロジェクトのどこでも使用できます
_$this->redirect($this->Common->get_url("login");
<a href="<?php $this->Common->get_src('users/login');?>">login</a>
_
コントローラーに共通ヘルパーを含めることを忘れないでください
完全なURLを提供するため、方法2と5をお勧めします
使用してもよい
<?php echo Router::fullbaseUrl();?>
同様に。
詳細については http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html を参照してください。
アプリの任意の場所でRouter::url('/', true)
を使用します。
特にビューでは、$this->Html->url('/', true)
(または実際には他のヘルパー、 Helper::url
メソッドはすべてのヘルパーに継承されます)。これは上記のRouter
メソッドの単なるラッパーです。
いずれの場合も、 second true
parameter により、完全なURLが返されます。
ほとんどの目的で、CakePHP HtmlHelperを使用してURLを生成することをお勧めします。この方法では、ベースURLについて心配する必要はありません。ただし、ビューでベースURLを取得する最もユーザーフレンドリーな方法は、<?php echo $html->webroot; ?>
。
Router::fullBaseUrl()
を使用できます
たとえば、example.com/testがあり、/ testを無視する場合は、「full」=> falseを使用できます。また、SSLを強制する場合は、 '_ ssl' => trueを追加できます。
つまり.
Router::fullBaseUrl(null, [ '_ssl' => true, 'full' => false]
Nullを最初のパラメーターとして渡すことを確認してください。これは、渡したい場合のベースURLであるためです。
注:上記の機能を使用するには、ルーターをインポートする必要があります。
use Cake\Routing\Router
FULL_BASE_URL
定数を使用できます。