Использование внешних js с расширением .php в Codeigniter

Я использую codeigniter 2, и у меня есть папка с темами из js , img , css- папок.

Внутри папки js имя файла js_functions.php содержит:

<?php header("Content-type: text/javascript"); ?> /** * GLOBAL VARIABLES & PATHS * * path definitions for jquery inline usage * */ var base_url = '<?=base_url();?>'; // ------------------------------------------------------------------------ /** * jquery.message Global Implementation * * Shows message if any session flashdata named message is set * */ <?php if($this->session->flashdata('message')):?> $(function() { $().message("<?=$this->session->flashdata('message');?>"); }); <?php endif; ?> // ------------------------------------------------------------------------ 

и, вызывая в нем файл просмотра

 <script type="text/javascript" src="<?=base_url();?>themes/admin/js/js_functions.php"></script> 

корректно отображает. Но он возвращается на экране проверки хрома:

 var base_url = '<br /> Uncaught SyntaxError: Unexpected token ILLEGAL 

и в браузере, когда вы вызываете страницу из адресной строки:

 var base_url = '<br /> <b>Fatal error</b>: Call to undefined function base_url() in <b>F:\xampp\htdocs\themes\js\js_functions.php</b> on line <b>11</b><br /> 

Что не так? Разве это не правильный способ использования php во внешнем файле js / php?

Вам нужно создать контроллер, чтобы получить скрипт. Может быть js . Внутри вашего контроллера вы устанавливаете заголовки типа контента и загружаете представление, которое содержит выше javascript. Допустим, у вас есть контроллер js

 class Js extends CI_Controller{ public function js_functions(){ $this->output->set_header('Content-type: text/javascript'); $data = array( 'messages' => $this->session->flashdata('message')); $this->load->view('jsfunc',$data); } } 

И вы можете загрузить сценарий в главном представлении, как это

 <script src="<?php echo base_url('js/js_functions'); ?>"></script> 

Если вы хотите генерировать динамические js , css файлы. Используйте стандартный MVC-метод. Создайте папку в папке с именем js или css. Создавайте файлы js или css в виде файла просмотра php. Например: slider.js.php .

Создайте контроллер themejs.php . Переместите все файлы js или css на этот контроллер, который вам нужен, используя маршрутизацию. И внутри этого контроллера сделать динамическое действие, передать varibles в js, css просматривать файлы. И напечатайте их заголовком

base_url() является функциональной частью помощника URL- base_url() CI. Если вы хотите использовать его в этом файле, и вы не хотите создавать экземпляр объекта $ CI, вам придется реализовать свою собственную версию этой функции.