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/08/30 09:32] – doubleface | tutoriels:crud-generic-zones [2007/12/17 11:47] – laurent | ||
---|---|---|---|
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 ===== | ||
- | Étant donné qu'il y a des bugs dans jForms de la version 1.0 beta 2.1 de Jelix (rappel: jForms est étiqueté comme étant experimental dans cette version !), **les exemples de ce tutoriel ne fonctionnent qu' | ||
- | |||
- | Vous devez avoir fait le [[manuel: | ||
- | |||
- | |||
- | |||
- | ===== 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 [[manuel: | ||
- | |||
- | |||
- | 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 [[manuel: | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | ===== 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: | ||