уроки - base_url в CakePHP





скачать github (6)


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

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

В большинстве веб-приложений нам нужен глобальный 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



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




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

  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.




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

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

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

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

Router::url('/', true);



Если вы сражаетесь с PHP Strict предупреждениями в выпуске консоли cake, загляните в ваше app/config/core.php .

В CakePhp 1.3 error_reporting(...) перезаписывается опцией 'log' , поэтому убедитесь, что вы исключили E_STRICT здесь:

/**
 * CakePHP Log Level:
 *
 * In case of Production Mode CakePHP gives you the possibility to continue logging errors.
 *
 * The following parameters can be used:
 *  Boolean: Set true/false to activate/deactivate logging
 *    Configure::write('log', true);
 *
 *  Integer: Use built-in PHP constants to set the error level (see error_reporting)
 *    Configure::write('log', E_ERROR | E_WARNING);
 *    Configure::write('log', E_ALL ^ E_NOTICE);
 */
Configure::write('log', E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);




php cakephp