В большинстве веб-приложений нам нужен глобальный 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);
Используйте любой вариант ниже
<?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>
Не забывайте включать общий помощник в контроллер
Я рекомендую метод 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; ?>
.