Piste :
Différences ¶
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | Prochaine révisionLes deux révisions suivantes | ||
tutoriels:crud-generic-zones [2007/12/17 11:47] – laurent | tutoriels:crud-generic-zones [2008/06/08 20:52] – édition externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== CRUD avec zones ====== | ||
+ | |||
+ | Ce tutoriel provient de la [[http:// | ||
+ | * La performance (temps de réponse) | ||
+ | * Réutilisation du code (besoin ou pas besoin) | ||
+ | * Maintenance (évolution du logiciel est élevé ou pas) | ||
+ | * Expérience du développeur (débutant ou expert) | ||
+ | * Respect de normes de développement (individu ou en entreprise) | ||
+ | |||
+ | Cet article tiendra compte, au moins en partie je l' | ||
+ | |||
+ | Vous pouvez télécharger le code de ce tutorial directement de la forge à l' | ||
+ | |||
+ | Le fichier contient une application nommée myapp. | ||
+ | |||
+ | ===== Pré-requis ===== | ||
+ | |||
+ | |||
+ | **ATTENTION, | ||
+ | |||
+ | Il est donc à l' | ||
+ | |||
+ | Vous devez avoir fait le [[tutoriels: | ||
+ | |||
+ | |||
+ | |||
+ | ===== Création de l' | ||
+ | Veillez suivre la démarche décrite dans l' | ||
+ | |||
+ | Nom de l' | ||
+ | Nom du module : crudtuto3\\ | ||
+ | |||
+ | basePath = //"/ | ||
+ | |||
+ | Il se peut que cette table existe déjà dans votre base de données, sinon créez là. | ||
+ | |||
+ | <code sql> | ||
+ | |||
+ | CREATE TABLE `news` ( | ||
+ | `id_news` int(11) NOT NULL auto_increment, | ||
+ | `sujet` varchar(255) NOT NULL, | ||
+ | `texte` text NOT NULL, | ||
+ | `news_date` date NOT NULL, | ||
+ | PRIMARY KEY (`id_news`) | ||
+ | ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; | ||
+ | |||
+ | </ | ||
+ | |||
+ | Ressource jDao : crudtuto3~news\\ | ||
+ | Fichier DAO : news\\ | ||
+ | Table : news | ||
+ | |||
+ | Créez dans le répertoire // | ||
+ | |||
+ | <code html> | ||
+ | |||
+ | <?xml version=" | ||
+ | <forms xmlns=" | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Notes sur l' | ||
+ | **Dans un premier temps nous allons créer une réponse personnalisée** | ||
+ | |||
+ | **Nous allons créer une classe de services pour le CRUD** | ||
+ | * ainsi on maximize la réutilisation du code | ||
+ | * elle peut contenir des services rendus à l'aide des classes jDao ou ou jDb | ||
+ | * elle n'est pas générique mais est utilisée par plusieurs ressources de Jelix | ||
+ | |||
+ | **Nous allons créer 4 zones avec paramètres** | ||
+ | * ainsi on peut maximizer la réutilisation du code | ||
+ | * elles traiteront en partie de la logique du CRUD | ||
+ | * elles peuvent récupèrer un service selon selon une action du CRUD. | ||
+ | * elles traitent les données, si nécessaire | ||
+ | * elles gèrent 3 templates spécifiques au DAO utilisé (view, browse et edit) | ||
+ | * ces zones ne sont pas génériques. | ||
+ | |||
+ | **Nous allons créer une classe générique du CRUD** | ||
+ | * elle créera une réponse html ou une redirection, | ||
+ | * elle traitera en partie de la logique du CRUD | ||
+ | * elle récupèrera des services | ||
+ | * elle insèrera des zones avec paramètres dans le template principal | ||
+ | * elle gère 1 template générique (// | ||
+ | |||
+ | **Il faut une classe d' | ||
+ | * elle termine la préparation de l' | ||
+ | * elle retourne la réponse | ||
+ | * elle initialisera le classe générique du CRUD | ||
+ | * elle gère le template principal (// | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== La réponse HTML ===== | ||
+ | |||
+ | Le but de créer une réponse HTML personnalisée est de généraliser dans l' | ||
+ | *l' | ||
+ | *de garantir l' | ||
+ | *et l' | ||
+ | |||
+ | Voyez le contenu du fichier // | ||
+ | |||
+ | |||
+ | Consultez le manuel pour obtenir plus de détail sur la classe [[fr: | ||
+ | |||
+ | |||
+ | Pour indiquer à Jelix que vous avez créé une réponse personnalisée, | ||
+ | |||
+ | <code ini> | ||
+ | html = myhtmlResponse | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Création d'une classe de services pour le CRUD ===== | ||
+ | Dans ce tutoriel, cette classe métiers ou de services contient peu de fonctions. | ||
+ | |||
+ | Par exemple, personnellement je préfère utiliser un jDb pour __browser__ les news. Parce que je peux faire un select avec 2 champs. | ||
+ | |||
+ | Voir le fichier // | ||
+ | |||
+ | Consulter le manuel et son article sur les [[fr: | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Création de quatre zones avec paramètres ===== | ||
+ | Les zones ne sont pas génériques mais peuvent être utilisées dans plusieurs actions ou même plusieurs templates directememt. | ||
+ | |||
+ | Ces zones sont accompagnées de leur template. | ||
+ | |||
+ | Puisqu' | ||
+ | |||
+ | Voir les fichiers du répertoire // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | |||
+ | Consultez le manuel et l' | ||
+ | |||
+ | ===== Création d'une classe générique du CRUD ===== | ||
+ | Cette classe de base et les zones se partagent la logique du CRUD. En fait dans cette classe on retrourve que la logique du __save__ et du __delete__ (__destroy__). | ||
+ | |||
+ | Remarquez dans cette classe la façon d' | ||
+ | |||
+ | Cette classe est complètement générique grâce à son initialisation dans la classe d' | ||
+ | |||
+ | Voir le fichier // | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Création d'une classe d' | ||
+ | La classe d' | ||
+ | - la configuration du CRUD | ||
+ | - la réponse html ou la redirection créées par le CRUD | ||
+ | - une fonction qui permet de faire la distinction entre ces deux réponses. | ||
+ | |||
+ | |||
+ | Le reste est comme une boîte noir. Le développeur peut ne pas s'en occuper. | ||
+ | |||
+ | Voir le fichier // | ||
+ | |||
+ | Voir le fichier // | ||
+ | |||
+ | Consultez le manuel et l' | ||
+ | |||
+ | |||
+ | ---- | ||
+ | * [[tutoriels: | ||