CodeIgniter и Javascript / Jquery Library - PullRequest
       1

CodeIgniter и Javascript / Jquery Library

20 голосов
/ 19 февраля 2011

Как сказал заголовок, я пытаюсь понять, как использовать библиотеки 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 .(кажется, что он не может найти библиотеку, что я испортил?)

Проверка в системной папке, что все файлы на месте:

system/libraries/Javascript.php
system/libraries/javascript/Jquery.php

Заранее спасибо за вашпомощь!

Ответы [ 9 ]

14 голосов
/ 28 марта 2011

Поместите код в config.php так:

$config['javascript_location'] = 'js/jquery/jquery.js';
$config['javascript_ajax_img'] = 'images/ajax-loader.gif';

В вашем файле контроллера (например, controllers / 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

13 голосов
/ 19 февраля 2011

Важно отметить, что этот Драйвер помечен как экспериментальный , поэтому я бы не стал полагаться на него.

Также,лично я думаю, что это требует путаницы и головной боли, чтобы попытаться напрямую смешать части приложения на стороне сервера с частями на стороне клиента.

Чтобы использовать javascript в ваших представлениях, я бы просто начал с их загрузки...

<script type="text/javascript" src="<?= base_url() ?>path/to/jquery.js"></script>
7 голосов
/ 08 ноября 2011

Поскольку этот драйвер является экспериментальным, документация еще не готова. Но я смог найти решение.

Во-первых, в документации есть ошибка. Если вы не измените основную библиотеку 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; ?>
3 голосов
/ 19 февраля 2011

Хотя CI сначала ищет папку system, вы также можете попробовать поместить свои библиотеки в следующие папки:

application/libraries/Javascript.php
application/libraries/javascript/Jquery.php
1 голос
/ 02 мая 2015

Как мы знаем из руководства пользователя, сначала это было экспериментально, но работало. Первый шаг - открыть ваш конфигурационный файл в application / config / config.php.

Поставьте следующую строку:

// path to JS directory you want to use, I recommended to put the .js file under 'root app/js/yourfile.js'

$config['javascript_location'] = 'js/yourfile.js';

Второй шаг - открыть ваш контроллер, в методе конструктора введите следующий код:

// Load javascript class
$this->load->library('javascript');
$this->load->library('javascript/jquery'); // if u want to use jquery

Затем, все еще в файле контроллера в методе индекса:

$data['library_src'] = $this->jquery->script(); // Because I refer to use jquery I don't test to use $this->javascript->script().

Затем откройте файл представления и поместите следующий код в заголовок тега:

<?php echo $library_src; ?>

Этот способ работает для меня, давайте попробуем.

1 голос
/ 14 октября 2013

Не уверен, почему вы должны загрузить свой файл js через контроллер, а затем повторить его в вашем представлении. Вы можете просто загрузить свой JS-файл, используя HTML-теги прямо в вашем представлении. Передача данных из контроллера и отображение их в основном используется, когда значение вашей переменной является динамическим / должно быть загружено из баз данных и т. Д.

1 голос
/ 14 октября 2013

Использование:

$this->load->library('javascript/jquery');

вместо:

$this->load->library('jquery');

Это загрузит вашу библиотеку jQuery.

0 голосов
/ 15 апреля 2015

Вы можете попробовать это, это работа для меня.в config.php

$config['javascript_location'] = 'http://localhost/ci/js/jquery.min.js';

в контроллере

 public function __construct() {
    parent::__construct();
    $this->load->library('javascript');
    $this->load->library('javascript/jquery');
}

 public function index(){
    $d['library_src'] = $this->jquery->script();
    $d['logalert']=$this->jquery->_show('#logalert',1000,"$('#logalert').html('hello world');");
    $this->load->view('main',$d);
 }

в представлении (head)

<?php echo $library_src; ?>

в представлении содержимого (body)

<div class="alert alert-dismissable alert-info" id="logalert">                          
        <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
    </div>

в представлении javascript

<script type="javascript">
$(document).ready(function(){ 
   <?php echo $logalert; ?>
};
</script>

счастливое кодирование:)

0 голосов
/ 09 августа 2014

У меня была такая же проблема, и нашел:

<?php $this->load->library('javascript'); ?>
<?php $this->load->library('javascript/jquery'); ?>

на https://ellislab.com/forums/viewthread/181742/#860506

Поскольку jquery находится в папке javascript.

Или

$autoload['libraries'] = array('database', 'session', 'javascript', 'javascript/jquery');

В файле autoload.php.

Это решило проблему загрузки библиотеки.

...