web-dev-qa-db-ja.com

CakePHPのbase_url

ほとんどのWebアプリケーションでは、グローバル変数base_urlが必要です。 base_urlを取得するcakephpでは、現在、app_controller.phpのbeforeRenderメソッドに次のコードを配置します

function beforeRender(){
    $this->set('base_url', 'http://'.$_SERVER['SERVER_NAME'].Router::url('/'));
}

代替手段はありますか?これはベースURLを取得するためにこれよりも利用可能なグローバル変数がありますか?

36
Musa

はいあります。あなたの見解では、あなたはアクセスすることができます:

<?php echo $this->webroot; ?>

また、ホスト情報は$_SERVER['HTTP_Host']変数は、必要に応じて。

コントローラーで、完全なURLが必要な場合は、これを使用します。

Router::url('/', true);
69
RabidFire

以下の誰でもオプションを使用

  1. <?php echo $this->Html->url('/');?>

  2. <?php Router::url('/', true); ?>

  3. _<?php echo $this->base;?>_

  4. _<?php echo $this->webroot; ?>_

  5. 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をお勧めします

28
Subodh Ghulaxe

使用してもよい

<?php echo Router::fullbaseUrl();?>

同様に。

詳細については http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html を参照してください。

10
Keerthi Bandara

アプリの任意の場所でRouter::url('/', true)を使用します。
特にビューでは、$this->Html->url('/', true)(または実際には他のヘルパー、 Helper::url メソッドはすべてのヘルパーに継承されます)。これは上記のRouterメソッドの単なるラッパーです。

いずれの場合も、 second true parameter により、完全なURLが返されます。

9
deceze

ほとんどの目的で、CakePHP HtmlHelperを使用してURLを生成することをお勧めします。この方法では、ベースURLについて心配する必要はありません。ただし、ビューでベースURLを取得する最もユーザーフレンドリーな方法は、<?php echo $html->webroot; ?>

1
Nigel

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定数を使用できます。

0
Gr Brainstorm