base_url в CakePHP



Answers

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

  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.

Question

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

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

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




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

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

т.е.

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

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

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

use Cake\Routing\Router






Related



Tags

php php   cakephp