Установка baseurl в CakePHP - PullRequest
4 голосов
/ 02 июня 2010

Я работаю над приложением, которое выполняется в CakePHP, и я использую запросы AJAX изнутри.

Во всех случаях для всех постов ajax я использовал URL как

var ht = $.ajax({
                     type: "GET",
                     url: "http://172.20.52.99/FormBuilder/index.php/forms/viewChoices/"+attribute_id,
                     async: false
                }).responseText;
var myObject = eval('(' + ht + ')');

Есть ли способ в CakePHP, где я могу указать свой базовый URL-адрес как http://172.20.52.99/FormBuilder/index.php/ и вызвать базовый URL-адрес во всех местах, где я хочу.

Ответы [ 7 ]

3 голосов
/ 16 декабря 2011

Попробуйте написать следующий код

'http://'.$_SERVER['HTTP_HOST'].$this->base

$_SERVER['HTTP_HOST'] ---- это даст вам рабочий хост

и $this->base --- даст вам рабочий URL

2 голосов
/ 22 августа 2014

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

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

также.

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

2 голосов
/ 20 мая 2011

Вы можете использовать $ this-> base, чтобы получить базовый URL.

1 голос
/ 19 марта 2013

Используйте любой из следующих способов

  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 в любом месте вашего проекта

1 голос
/ 18 августа 2010

Вы можете установить URL-адрес по умолчанию для всех ваших запросов AJAX следующим образом:

$.ajaxSetup({
  url: 'http://172.20.52.99/FormBuilder/index.php/'
});
0 голосов
/ 16 декабря 2011

Это также может быть полезно:

http://book.cakephp.org/view/1448/url

<?php echo $this->Html->url('/posts', true); ?>

//Output
http://somedomain.com/posts
0 голосов
/ 02 июня 2010

Я предполагаю, что у меня тот же сценарий: для разработки сайт доступен по адресу localhost / cake, в результате чего в производственном процессе сайт разворачивается в корневом каталоге example.com. В шапке я установил:

<base href="<?php echo $base_url ?>" /> * * 1004

в AppContoller::beforeRender() Я установил:

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

Это прекрасно работает для всего, кроме JS (таким образом, AJAX), поскольку игнорирует base_url.

Поэтому у меня есть обходной путь (использует jQuery, но легко заменить без него):

forUrl = function(url) {
    return $('base').attr('href')+url.substr(1);
}

login = function() {
    $.post(forUrl('/ajax/profileDiv'), $('#profile-login-form').serialize(),
        function(data) {
            (...)
        });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...