Главная > cakephp, решения проблем > CakePHP и относительные пути url в JavaScript

CakePHP и относительные пути url в JavaScript

Способность web-приложения работать не только в корневом каталоге сайта, но и в любом подкаталоге делает его более привлекательным для использования.

Если при использовании CakePHP соблюдать стандарты и для формирования url использовать $html->link() и Router::url() то ссылки в приложении всегда будут с учетом того из какого каталога оно запущенно.

Но, как всегда есть «но». JavaScript ничего не подозревает о том из какого каталога запущено приложение. Из-за этого возникает проблема с url для AJAX запросов. Ниже я приведу один из способов решения этой проблемы.

Первым делом добавим во все layout’ы строчку в секцию head:

<base href="<?php echo Router::url('/'); ?>" />

Теперь добавим JavaScript функцию в js файл который доступен для всего приложения:

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

Все. Теперь осталось только использовать решение.
Пример получения данных:

$('#foo').get($.url('/posts/index));

*В статье приведены примеры с использованием jQuery.
**Были использованы материалы с сайта http://debuggable.com

  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.