web-dev-qa-db-fra.com

CodeIgniter et Javascript/Jquery Library

Comme le titre l'indique, j'essaie de comprendre comment utiliser les bibliothèques javascript et jquery sur CI. 

En suivant les instructions dans the docs , je charge la bibliothèque dans mon contrôleur:

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

Ensuite, je définis l’emplacement du fichier jQuery (jquery.min.js) dans le fichier config.php:

$config['javascript_location'] = 'http://localhost/ci/assets/js/jquery/');

Après cela, j'ouvre le fichier de vue et insère ces deux lignes:

<?php echo $library_src;?>
<?php echo $script_head;?> 

La première erreur est la suivante: Variable non définie $ library_src et $ script_head (je ne comprends pas où je dois les définir)

Quoi qu’il en soit, j’ai commenté ces lignes et continue avec jquery lib en le chargeant dans mon contrôleur avec:

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

Erreur suivante: Impossible de charger la classe demandée: jquery . (il semble qu'il ne trouve pas la lib, qu'est-ce que j'ai foiré?)

En vérifiant le dossier système, il semble que tous les fichiers sont en place:

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

Merci d'avance pour votre aide!

20
Luciano

Il est important de noter que ce Driver est marqué comme experimental donc je ne le ferais pas.

De plus, personnellement, je pense que cela demande de la confusion et des maux de tête pour essayer de mélanger directement des portions côté serveur de vos applications avec des portions côté client.

Pour utiliser javascript dans vos vues, je commencerais simplement par les charger comme ceci ...

<script type="text/javascript" src="<?= base_url() ?>path/to/jquery.js"></script>
13
jondavidjohn

Mettez le code dans le fichier config.php comme ceci:

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

Dans votre fichier de contrôleur (par exemple controllers/sample.php), tapez ces codes:

 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);

}

Dans votre fichier de vue (par exemple, views/sampleview.php), tapez ces codes:

<?php echo $library_src;?>
<?php echo $script_head;?>

Cela fonctionne pour moi. J'espère que cela fonctionne pour vous aussi. XD

14
zecohsox

Comme ce pilote est expérimental, la documentation n’est pas encore tout à fait là. Mais j'ai pu trouver une solution.

Premièrement, la documentation contient une erreur. À moins que vous ne changiez la bibliothèque Javascript principale (non suggéré), la variable de référence est pas $script_head mais en fait$script_foot.

Deuxièmement, une fois que vous avez terminé vos appels, il semble que vous ayez besoin de courir 

$this->javascript->external();

et

$this->javascript->compile();

Ces fonctions définissent les variables $library_src et $script_foot.

Pour tout mettre ensemble, dans votre contrôleur, vous auriez:

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');
   }
}

À votre avis, vous auriez 

<html>
  <head>
     <?php echo $library_src; ?>
     <?php echo $script_foot; ?>
7
R. Down

Bien que CI recherche d’abord le dossier system, vous pouvez également essayer de placer vos bibliothèques dans les dossiers suivants:

application/libraries/Javascript.php
application/libraries/javascript/Jquery.php
3
Sarfraz

Utilisation: 

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

au lieu de:

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

Cela chargera votre bibliothèque jQuery.

1
rishabh shah

Comme nous le savons sur le guide de l’utilisateur, c’était d’abord une expérience mais qui fonctionnait bien. La première étape consiste à ouvrir votre fichier de configuration sous application/config/config.php. 

Mettez la ligne suivante: 

// 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';

La deuxième étape est d'ouvrir votre contrôleur, dans la méthode constructeur, mettez le code suivant: 

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

Ensuite, toujours dans le fichier du contrôleur dans la méthode d'indexation: 

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

Puis ouvrez votre fichier de vue et mettez le code suivant dans la tête de balise: 

<?php echo $library_src; ?>

Cela fonctionne pour moi, essayons.

1
Dev1410

Vous ne savez pas pourquoi vous devez charger votre fichier js via un contrôleur, puis le renvoyer à votre vue. Vous pouvez simplement charger votre fichier js en utilisant des balises HTML directement dans votre vue. Le passage de données du contrôleur et son affichage dans la vue sont principalement utilisés lorsque la valeur de votre variable est dynamique/doit être chargée à partir de bases de données, etc. 

1
wdphd

Vous pouvez essayer ça, ça marche pour moi.
dans config.php

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

dans le contrôleur

 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);
 }

en vue (tête)

<?php echo $library_src; ?>

en vue contenu (corps)

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

en vue javascript

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

bonne codage :)

0
empugandring

J'ai eu le même problème et j'ai trouvé:

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

sur https://ellislab.com/forums/viewthread/181742/#860506

Parce que jquery est dans le dossier javascript.

Ou

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

Dans le fichier autoload.php.

Cela résout le problème du chargement de la bibliothèque.

0
Nils BAY