Подтвердить что ты не робот

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, а не этого?

4b9b3361

Ответ 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-адрес.

Ответ 5

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