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, а не этого?
Ответы
Ответ 1
Да, есть. По вашему мнению, вы можете получить доступ:
<?php echo $this->webroot; ?>
Кроме того, ваша информация о хосте хранится в переменной $_SERVER['HTTP_HOST']
, если вы этого хотите.
В вашем контроллере, если вы хотите получить полный URL-адрес, используйте это:
Router::url('/', true);
Ответ 2
Используйте любой вариант ниже
-
<?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.
Ответ 3
Используйте Router::url('/', true)
в любом месте приложения.
В частности, в представлении вы можете использовать $this->Html->url('/', true)
(или любой другой Помощник, метод Helper::url
наследуется всеми помощниками), который является просто оболочкой для вышеуказанного метода Router
.
В любом случае параметр второй true
заставляет его возвращать полный URL-адрес.
Ответ 4
Вы можете использовать
<?php echo Router::fullbaseUrl();?>
.
Подробнее см. http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html.
Ответ 5
Для большинства целей я бы предложил использовать CakePHP HtmlHelper для создания URL-адресов, поэтому вам не нужно беспокоиться о базовом URL-адресе. Однако наиболее удобный для пользователя способ получения базового URL-адреса в вашем представлении будет <?php echo $html->webroot; ?>
.