base_url в CakePHP - PullRequest
       1

base_url в CakePHP

36 голосов
/ 28 ноября 2010

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

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

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

Ответы [ 7 ]

68 голосов
/ 28 ноября 2010

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

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

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

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

Router::url('/', true);
28 голосов
/ 01 декабря 2012

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

  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>

Не забудьте включить в контроллер Common helper

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

10 голосов
/ 05 ноября 2013

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

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

.

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

9 голосов
/ 29 ноября 2010

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

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

1 голос
/ 05 января 2018

Вы можете использовать Router::fullBaseUrl()

Если у вас есть, например, example.com/test и вы хотите игнорировать / test, вы можете использовать 'full' => false. Также, если вы хотите форсировать ssl, вы можете добавить '_ssl' => true.

т.е.

Router::fullBaseUrl(null, [ '_ssl' => true, 'full' => false]

Убедитесь, что вы передаете null в качестве первого параметра, так как это базовый URL, если вы хотите его передать.

примечание: вам нужно импортировать маршрутизатор, чтобы использовать вышеуказанную функцию:

use Cake\Routing\Router
1 голос
/ 29 ноября 2010

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

0 голосов
/ 30 мая 2019

Вы можете использовать FULL_BASE_URL константу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...