codeigniter где разместить общий код js php
У меня есть сайт, разработанный в codeigniter.
На многих страницах моего сайта у меня есть более равная функция javascript/jquery со строкой в PHP, например:
function change_city_by_nation(nation_id){
var site_url_city ="<?php echo(site_url('/backend/city/get_city_by_nation_id')); ?>";
$.ajax({
url: site_url_city,
async: false,
type: "POST",
data: "nation_id="+nation_id,
dataType: "html",
success: function(data) {
$('#city').empty();
$(data +' option').each(function(index){
$('#city').append($(this).html());
});
$('#city').prepend("<option value='0' selected='selected'>Tutte le città</option>");
}
});
}
Где лучшее место для сбора всей этой функции JavaScript с какой-то строкой в php?
- файл JS (но я должен передать строку php, когда я ее вызываю)
- Помощник (но как?)
- файл php, где объявляют функцию JS как common.php(но куда ее поместить и как ее вызвать?)
У вас есть решение для моей сферы? Спасибо
2 ответа
Если вам нужно сгруппировать эти сценарии, вы можете создать обычный файл.js, но с измененными параметрами функции - сделать так, чтобы все значения, отправляемые PHP, фактически становились параметрами функции. Так, например,
function change_city_by_nation(nation_id){...}
становится
function change_city_by_nation(url_from_php, nation_id){...}
так далее...
И, конечно же, вам необходимо изменить тела функций и вызовы функций (из представлений) впоследствии.
Однако, если у вас есть функция, которая используется только на одной странице, вполне допустимо оставить там функцию JS и встраивать значения PHP так же, как вы делали это в своем примере.
Это довольно распространенная практика для создания переменной JS в вашем <head>
(или где-то перед вашим основным файлом JS), который ссылается на базовый URL-адрес или другие общие переменные, необходимые JS, которые генерируются серверной частью.
<script>
var SITE_URL = "<?php echo site_url(); ?>";
</script>
Затем ваш файл Javascript будет включен в конце вашего <body>
HTML источник, и он может использовать эти переменные, где это необходимо.
То, как вы генерируете исходные переменные, будет зависеть от того, как вы будете обрабатывать шаблоны в вашем приложении. Общий колонтитул сделает весь процесс проще.