base_url в CakePHP

В большинстве веб-приложений нам нужен глобальный var base_url. В cakephp для получения base_url в настоящее время я помещаю следующий код в метод beforeRender в app_controller.php

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

Есть ли альтернатива? Есть ли какая-либо глобальная переменная, доступная для получения базового url, а не этого?

Да, есть. По вашему мнению, вы можете получить доступ:

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

Кроме того, ваша информация о хосте хранится в переменной $_SERVER['HTTP_HOST'] если вы этого хотите.

В вашем контроллере, если вы хотите использовать полный URL-адрес, используйте это:

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

Используйте любой вариант ниже

  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> 

Не забывайте включать общий помощник в контроллер

Я рекомендую метод 2 и 5, потому что они дают полный URL.

Используйте Router::url('/', true) любом месте вашего приложения.
В частности, в представлении вы можете использовать $this->Html->url('/', true) (или любой другой Помощник на самом деле, метод Helper::url наследуется всеми помощниками), который является просто оболочкой для вышеупомянутый метод Router .

В любом случае второй true параметр заставляет его возвращать полный URL.

Вы можете использовать

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

также.

Подробнее см. http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html .

Для большинства целей я бы предложил использовать CakePHP HtmlHelper для создания URL-адресов, поэтому вам не нужно беспокоиться о базовом URL-адресе. Однако наиболее удобный для пользователя способ получить базовый URL-адрес в вашем представлении будет <?php echo $html->webroot; ?> <?php echo $html->webroot; ?> .