Как говорится в названии, я пытаюсь выяснить, как использовать библиотеки javascript и jquery в CI.
Следуя инструкциям в документах , я загружаю библиотеку в свой контроллер:
$this->load->library('javascript');
Затем я определяю местоположение файла jQuery (jquery.min.js) в файле config.php:
$config['javascript_location'] = 'http://localhost/ci/assets/js/jquery/');
После этого я открываю файл представления и помещаю в эти две строки:
<?php echo $library_src;?> <?php echo $script_head;?>
Здесь появляется первая ошибка: неопределенная переменная $ library_src и $ script_head (не понимаю, где я должен их устанавливать)
Во всяком случае, я прокомментировал эти строки и продолжил работу с jquery lib, загрузив его в контроллер:
$this->load->library('jquery');
Следующая ошибка: Не удалось загрузить запрошенный класс: jquery . (кажется, что он не может найти lib, что я испортил?)
При проверке в системной папке все файлы находятся на месте:
system/libraries/Javascript.php system/libraries/javascript/Jquery.php
Заранее спасибо за вашу помощь!
Важно отметить, что этот драйвер отмечен как экспериментальный, поэтому я не стал бы на него полагаться.
Кроме того, лично я думаю, что он просит путаницу и головные боли, чтобы попытаться напрямую смешивать серверные части ваших приложений с частями на стороне клиента.
Чтобы использовать javascript в ваших представлениях, я бы просто начал загружать их вот так …
<script type="text/javascript" src="<?= base_url() ?>path/to/jquery.js"></script>
Поместите код в config.php следующим образом:
$config['javascript_location'] = 'js/jquery/jquery.js'; $config['javascript_ajax_img'] = 'images/ajax-loader.gif';
В вашем файле контроллера (например, контроллеры / sample.php) введите следующие коды:
function __construct() { parent::__construct(); $this->load->library('javascript'); } function index() { $data['library_src'] = $this->jquery->script(); $data['script_head'] = $this->jquery->_compile(); $this->load->view('sampleview', $data); }
В вашем файле вида (например, views / sampleview.php) введите следующие коды:
<?php echo $library_src;?> <?php echo $script_head;?>
Это работает для меня. Надеюсь, это сработает и для вас. XD
Поскольку этот драйвер является экспериментальным, документация еще не совсем там. Но я смог найти решение.
Во-первых, в документации есть ошибка. Если вы не измените основную библиотеку Javascript (не рекомендуется), ссылочная переменная не является $script_head
а фактически $script_foot
.
Во-вторых, как только вы закончите делать свои звонки, кажется, вам нужно запустить
$this->javascript->external();
а также
$this->javascript->compile();
Эти функции устанавливают переменные $library_src
и $script_foot
.
Чтобы собрать все это вместе, в вашем контроллере у вас будет:
class Some_Controller extends CI_Controller { public function index() { $this->javascript->click('#button', "alert('Hello!');"); $this->javascript->external(); $this->javascript->compile(); $this->load->view('index'); } }
По вашему мнению, вы бы
<html> <head> <?php echo $library_src; ?> <?php echo $script_foot; ?>
Хотя CI сначала ищет system
папку, вы также можете попробовать разместить свои библиотеки в этих папках:
application/libraries/Javascript.php application/libraries/javascript/Jquery.php