Introduction serveur => organisation du code en Modèle vue contrôleur http://fr.wikipedia.org/wiki/Mod%C3%A8le-vue-contr%C3%B4leur Modèle => méthode pour agir sur les données (lecture/modification/insertion) Vue => interface (affichage et récupération des événements) de l'utilisateur => pas de traitement Contrôleur => gestion des événements mise à jour des données Codeigniter modèle-vue-presentation http://fr.wikipedia.org/wiki/Mod%C3%A8le-vue-pr%C3%A9sentation http://fr.wikipedia.org/wiki/Liste_de_frameworks_PHP http://www.phpframeworks.com/index.php doc autre CI http://performancephp.developpez.com/#LI-A 1 installation/téléchargement http://www.codeigniter.fr/ contenu /application/ : les éléments de configuration ; tous les éléments : vue , contrôleur, helper ...=> notre application /index.php /system/ : codeigniter (les différentes versions éventuellement) 2 créer une base de données et les tables dans cette base de données il faut : login MDP machine(localhost ou serveurmysql), la base de données (exemple : BDDmagasin) et créer les tables nécessaires à l'application. 3 configuration de codeigniter Ouvrir 4 fichiers dans le répertoire « application » : « config/config.php » ; «config/database.php » ; «config/autoload.php » ; « config/routes.php» lien :http://localhost/web/public_html/codeigniter/modele/ 3.1 configurer l'url de base dans le fichier : application/config/config.php modifier la ligne $config['base_url'] = 'http://http://localhost/web/essai1_codeigniter/'; //=> à modifier $config['language'] = 'french'; $config['encryption_key'] = 'ma cle d encriptage'; => Utilisation de session //=> à modifier eventuellement $config['global_xss_filtering'] = TRUE; /* faille de sécurité XSS */ //=> éventuellement à modifier $config['csrf_protection'] = TRUE; /* faille de sécurité CSRF */ //=> éventuellement à modifier remarque : csrf => presence d'un token sur les navigateurs 3.2 configurer la base de données dans le fichier : application/config/database.php //=> à modifier $db['default']['hostname'] = 'localhost'; //serveurmysql $db['default']['username'] = 'S3_users'; $db['default']['password'] = 'mdp'; $db['default']['database'] = 'S3BDD'; 3.3 configurer le chargement des classes (helper) dans le fichier : application/config/autoload.php $autoload['libraries'] = array('database','session','form_validation','email','cart'); $autoload['helper'] = array('form','url','text','string'); //=> pas obligatoire (évite le chargement) dans le fichier application/config/autoload.php $autoload['model'] = array('produit_m'); //=> pas obligatoire (évite le chargement) Il est possible de définir un constructeur dans le contrôleur qui charge la base (configuration par défaut sinon voir documentation), les modèles, les « helpers », les librairies function __construct() { parent::__construct(); $this>load>database(); $this>load>helper('url'); $this>load>model('produit_m'); //$this>load>helper(array('form','url','text','string')); //$this>load>library(array('session','form_validation','email')); } ATTENTION : ne pas recopier le contenu de $autoload['libraries'] => database n'est pas considérer comme une librairie 3.4 configurer le contrôleur de démarrage dans le fichier application/config/routes.php $route['default_controller'] = "produit_c"; => le contrôleur est à créer //=> à modifier 4 Premier contrôleur et première vue créer dans le répertoire application un contrôler (copie de welcome.php et adaptation) controllers/produit_c.php <?php class Produit_c extends CI_Controller { /* nom de la classe = nom du fichier avec majuscule */ function __construct() { parent::__construct(); } public function afficherProduits() { /* ou index() */ $this>load>view('head_v'); $this>load>view('nav_v'); $data['titre']="affichage du tableau produit"; $data['produit']=$this>produit_m>getAllProduits(); //print_r($data['produit']); $this>load>view('table_produit_v',$data); $this>load>view('foot_v'); } ?> Ajouter ensuite : views/v_head.php <html lang="fr"> <head> <meta charset="utf8"> <title>exemple MVC codeigniter php </title> <link rel="stylesheet" href="<?php echo base_url()?>css/style.css"> => mettre $autoload['helper'] = array('url'); ou => créer un répertoire css/ à la racine pour le css (bootstrap), javascript … </head> <body> dans la barre de navigation : modifier les liens <li><a href="<?php echo base_url();?>index.php/produit_c/creerProduit"> créer un produit </a></li> <li><a class="SousMenu" href="<?php echo site_url('produit_c');?>" >afficher/editer/supprimer les produits</a></li> model/produit_m.php <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Produit_m extends CI_Model { /* function __construct() { parent::__construct(); }*/ function getAllProduits(){ $sql="SELECT p.id, t.libelle, p.nom, p.prix, p.photo FROM produit as p,typeProduit as t WHERE p.id_type=t.id_type ORDER BY t.libelle;"; $query=$this>db>query($sql); return $query>result(); /* avec l'orm : http://www.codeigniter.com/userguide3/database/query_builder.html */ $this>db>select('p.id, t.libelle, p.nom, p.prix, p.photo'); $this>db>from('produit p'); $this>db>join('typeProduit t', 'p.id_type=t.id_type'); $this>db>order_by('t.libelle', 'ASC'); $this>db>order_by('p.nom', 'DESC'); $query = $this>db>get(); return $query>result();*/ } } views/v_table_produit.php <div class="row"> <a href="<?php echo base_url();?>index.php/Produit/creerProduit/"> Ajouter un produit </a> <table> <caption>Recapitulatifs des produits</caption> <thead> <tr><th>id</th><th>type</th><th>nom</th><th>prix</th><th>photo</th> <th>opération</th> </tr> </thead> <tbody> <?php if( $produit != NULL): ?> <?php foreach ($produit as $value): ?> <tr><td> <?php echo $value>id; ?> </td><td> <?php $value>libelle; ?> </td><td> <?= $value>nom; ?> </td><td> <?= $value>prix; ?> </td><td> <?= $value>photo; ?> </td><td> <img style="width:40px;height:40px" src="<?php echo base_url();?>images/<?= $value>photo; ?>" alt="image de <?= $value>libelle; ?>" > </td> <td> <a href="<?php echo base_url();?>index.php/produit_c/modifierProduit/<?= $value>id; ?>">modifier</a> <a href="<?php echo site_url("produit_c/supprimerProduit")."/".$value>id; ? >">supprimer</a> </td> </tr> <?php endforeach; ?> <?php endif; ?> <tbody> </table> </div> Remarque : La fonction <?php echo base_url();?> devant l'image, permet d'afficher les images malgré des url(s) différentes : url_base url_base/produit_c url_base/produit_c/index
© Copyright 2024