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