Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-11-2009 15:58:29

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

[Réflexion]Architecture du Modèle (web services, filtres, validation)

Bonjour,

J'aimerais lancer une discussion sur l'architecture du Modèle dans le motif MVC. Les sujets de ce type que je lance habituellement ne trouve pas leur public, mais tant pis j'essaie quand même :p

Ces derniers temps, depuis le succès des ORM comme Doctrine ou l'introduction des Mappers dans le dernier Quickstart ZF, ou encore avec le succès de frameworks dans d'autres langages comme JAVA ou Ruby, le sujet du modèle par un peu dans tous les sens.

J'aimerais ici recadrer le sujet et que ceux qui savent apportent leurs explications ou leurs remarques smile

La tendance est à la couche de services, même Matthew commence à en parler (c.f zendcon 2009). Mais voilà, c'est le mot "tendance" qui dérange. J'ai l'impression que beaucoup de développeurs implémentent des couches et des couches pour être dans la "mouvance" pour développer des applications "robustes", mais de quoi s'agit-il ?

Tout ceci commence à toucher le monde de PHP, et le problème est que le sujet n'est jamais approfondi, alors parlons en smile

Avant tout, pour freiner les pro du "tu te prend trop la tête" ou "vous vous posez trop de questions", je précise que ce sujet est bien sûr destiné à la conception d'applications d'une certaine envergure qui nécessitent de telles architectures pour être pérennes.

J'aimerais donc m'attarder sur la couche de services et donc le pattern Service Layer.

Tout d'abord, qu'est-ce qu'un service ? Quelle est la différence entre un service et un web service ?

La différence est qu'ils peuvent être liés mais n'ont rien à voir smile

Les web services, fournis par diverses solutions client-serveur ou non (REST, soap, XmlRPC, etc.), permettent de rendre public tout ou une partie d'une API dont "tout le monde" pourra en consommer les méthodes afin d'effectuer certaines opérations sur certaines ressources.

Les services permettent d'organiser la logique d'une application pour former une telle API qui pourra donc ensuite être rendue accessible depuis l'extérieur par le biais des web services.


Qu'est-ce que cette "logique d'une application" que les services doivent porter ?

La logique de l'application est toute la dynamique qui va permettre de manipuler le modèle métier (Domain Model). Le "Frontend" est la partie qui va permettre à l'utilisateur final de manipuler facilement son système. Il peut y avoir une multitude de frontends différents pour manipuler un même système d'information. Il est donc essentiel qu'il soit totalement détaché du "backend".

Prenons des exemples simples, de la vie de tous les jours. Vous avez une lampe, le seul moyen de manipuler cette lampe, c'est à dire "allumer" et "éteindre", est l'interrupteur fourni avec la lampe, et il est indissociable. Maintenant vous voudriez ajouter une possibilité à votre lampe, pouvoir régler l'intensité de l'éclairage. Impossible, vous devez acheter une autre lampe, l'interrupteur qui est indissociable de la lampe ne vous permet pas d'ajouter cette fonctionnalité. En plus de ça, vous voudriez pouvoir "commander" l'éclairage de cette lampe à l'aide de plusieurs interrupteur placé à différents endroits dans la pièce. Rien ne vous permet de le faire. (bon ok si, il existe des solutions, mais pas grâce à la lampe :p)

Et bien, dans notre monde, la couche de services permet de pallier à ces problèmes. Elle va fournir un système universel auquel vous allez pouvoir brancher n'importe quel type d'interrupteur et même un nombre infini d'interrupteurs.


Que doivent faire les services pour permettre ceci ?

Ils doivent porter tous les traitements qui permettent de manipuler efficacement le modèle. Ces traitements incluent le filtrage et la validation des données, la gestion du cache pour améliorer les performances, un système de logs de tous types, etc etc. Mais aussi éventuellement la gestion des droits.

Que ce soit votre front, ou celui d'un autre qui manipule le modèle, vous consommer les mêmes services. Vous directement, les autres par le biais de web services.


Le Modèle Métier (Domain Model) :

Les "domain objects" (objets métier) devraient toujours être des objets simples et indépendants de tout framework, ils ne dépendent que du langage utilisé (pour nous PHP) et n'utilisent que des fonctions natives au langage. Ces objets sont créés par le développeur et représentent les entités et leurs relations dans le métier manipulé par l'application. C'est la seule couche de l'application qui ne sera jamais atteinte par un changement radical, par ex. un changement de framework. Les outils changent, mais le métier reste le même.

Toute cette approche me plait, et je pense qu'il est possible, grâce à Zend et PHP d'implémenter tout ça d'une manière vraiment "robuste" et performante.


Il n'existe pour l'instant que très peu de ressources qui se penchent sur une telle implémentation dans PHP grâce au ZF.

J'ai déjà réfléchit à bon morceau du problème, avec beaucoup d'imperfections :p (voir http://www.z-f.fr/forum/viewtopic.php?id=4027, même si depuis ça a pas mal changé, j'ai adopté Doctrine par ex.)

Pour moi, la question qui reste en suspens en ce moment est : Comment filtrer et valider les objets ? dans une telle architecture.
Il est évident ici, que ce rôle n'est plus du ressort des contrôleurs. L'idéal serait que les objets eux même soient "validable" (une interface validatable), mais nous ne devons pas les lier au framework et donc à Zend_Form, Zend_Validate, Zend_Filter ou autre. C'est donc aux services qu'il revient de valider les objets.

C'est donc ma réflexion du moment, une méthode efficace et flexible, en utilisant les outils de Zend pour valider et filtrer les données par le biais des services.

Voici un schéma de ce que j'imagine : https://docs.google.com/Doc?docid=0ATG3 … &hl=fr

Dans ce schéma j'inclue une façade, cette façade sert tout simplement à orchestrer les services. Les façades sont en gros des super-services capables de répondre à des fonctionnalités qui nécessitent l'usage de plusieurs services. Ces façades ne communiquent jamais directement avec la couche d'accès aux données (Zend_Db, Doctrine ou autre). Grossièrement, on peut dire que dans la plupart des cas une façade = un package de cas d'utilisations en UML.
Ce pattern permet de n'avoir qu'un unique point d'entrée pour nos controlleurs ou nos webservices.


Voilà, si certains veulent se mêler à la réflexion. Sinon tant pis smile


A+ benjamin.

Dernière modification par Delprog (24-11-2009 16:21:59)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#2 25-11-2009 10:52:27

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Réflexion]Architecture du Modèle (web services, filtres, validation)

Moi je trouve ça intéressant.
Mais je comprends pas pourquoi ça ne serait plus aux controllers de filtrer et valider (= contrôler ?) tout ça ?
Ils serviraient à quoi alors les controllers?

Hors ligne

 

#3 25-11-2009 11:27:09

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Réflexion]Architecture du Modèle (web services, filtres, validation)

Mr.MoOx a écrit:

Moi je trouve ça intéressant.
Mais je comprends pas pourquoi ça ne serait plus aux controllers de filtrer et valider (= contrôler ?) tout ça ?
Ils serviraient à quoi alors les controllers?

Yeaah j'ai aggro quelqu'un !!

Salut smile

En fait, si nous imaginons une API qui pourra être utilisée par des tiers, c'est une perte de temps de développer notre propre front avec notre propre logique et ensuite de développer une API spécifique pour les tiers.

L'intérêt des services est que nous utilisons nous-même la même API que nous ouvrons à l'extérieur grâce aux webservices.

Imaginons un cas simple de CRUD, notre API (nos services) permet donc de manipuler les ressources. Nous ouvrons cette API vers le monde extérieur grâce aux webservices (presque rien à faire du coup), mais pour assurer une bonne robustesse nous devons s'assurer nous-même que les données qui nous serons envoyées soient filtrées et validées et non faire confiance aux consommateurs des services. Cette tâche doit donc être assurée par les services.

Quand nous allons construire notre propre "front" (nos vues et contrôleurs) par dessus notre modèle, inutile de répéter ces opérations, nous utiliserons directement notre API, celle là même qui est utilisée par les tiers. Les contrôleurs n'ont donc plus à s'inquiéter de la validation des données, ils ne font que consommer des méthodes de services. Dans mon schéma ils passent par les façades pour ne pas multiplier les services dont ils dépendent et n'avoir qu'un seul point d'entrée dans l'API. Notre front controlleur est donc un "aiguillage" et nos contrôleurs ne sont plus que de simples rails smile

Je dis plein de fois la même chose, mais c'est vrai que quand ça nous semble évident ce n'est pas forcément le cas pour les autres. Ces concepts existent depuis déjà un bout de temps, mais le monde objet de PHP est finalement tout neuf et il est temps d'aborder ces design qui font la robustesse d'autres langages :p
Les grands pontes de PHP et Zend se penchent certainement depuis déjà un moment sur la question, mais c'est bien d'en parler entre nous aussi et d'essayer de changer le monde big_smile


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#4 25-11-2009 15:05:28

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Réflexion]Architecture du Modèle (web services, filtres, validation)

Delprog a écrit:

Cette tâche doit donc être assurée par les services.

Je découvre par ton texte, que les 'gens' autour de moi ne le font pas ??!
Ca me semble tellement logique de le réaliser comme ca.

Chez moi, le contrôleur ne fait que réagir à des exceptions ou des codes d'erreur. Eventuellement, quelques suites d'action sur une API, mais c'est tout.


Par exemple, j'ai une API qui gêre des routeurs, si on fait une requête en mettant une ip bidon, ce n'est pas mon controlleur qui va tester l'ip, mais bien mon API.


----
Gruiiik !

Hors ligne

 

#5 25-11-2009 15:09:52

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Réflexion]Architecture du Modèle (web services, filtres, validation)

Je découvre par ton texte, que les 'gens' autour de moi ne le font pas ??!

Tout le monde ne connais pas les bonnes pratiques de conception d'une appli, et même bcp qui les connaissent ne les mètent pas en application. Dès fois ça donne des controlleurs sans classe métier qui font plus de 1500 lignes. C'est moche mais c'est la triste réalité parfois.

Hors ligne

 

#6 25-11-2009 15:26:33

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Réflexion]Architecture du Modèle (web services, filtres, validation)

Mr.MoOx a écrit:

Je découvre par ton texte, que les 'gens' autour de moi ne le font pas ??!

Tout le monde ne connais pas les bonnes pratiques de conception d'une appli, et même bcp qui les connaissent ne les mètent pas en application. Dès fois ça donne des controlleurs sans classe métier qui font plus de 1500 lignes. C'est moche mais c'est la triste réalité parfois.

Est-ce vraiment un problème de "bonne pratique" ou "j'ai la flemme de factoriser" ?
Car, maintenir un pavé de 1500, je pense pas qu'il soit difficile de s'en rendre compte que c'est difficilement gérable smile
Vaut mieux plusieurs bloque de 30 smile

D'ailleurs, un de mes collègues vient de s'en rendre compte, il vient de coder en C un programme d'un fichier de plus de 2000 lignes. résultat, il arrive plus à débuger (et en C, certains savent que les fuites de mémoire, ca s'attrape vite si on ne code pas proprement),
il va factoriser smile


----
Gruiiik !

Hors ligne

 

#7 25-11-2009 17:09:08

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Réflexion]Architecture du Modèle (web services, filtres, validation)

Ce n'est pas si évident que ça. Comprendre une archi ou des concepts est une chose, les appliquer en est une autre. Sur le papier tout parait toujours merveilleux, mais une fois qu'on code on se heurte à plein de questions bloquantes et on devient parano de ne pas respecter comme on dit "les bonnes pratiques".

Il ne s'agit pas de "bonnes pratiques" ou de "tendances" ou quoi que ce soit. Lorsqu'on design des appli. complexes, l'orienté objet devient très complexe et très subtil.

Dans l'univers de PHP, c'est seulement depuis PHP5 que nous touchons à de la POO avancée, c'est donc très récent. Beaucoup de dév. PHP ignorent les concepts (design pattern) qu'ils ont à disposition pour designer une application complexe.

Aujourd'hui si je parle des services c'est parce qu'ils sont utilisés à toutes les sauces et la plupart du temps l'objectif est surtout de produire au mépris des notions de base de la POO.
Et ce sujet, et la façon dont les services sont utilisés dans la plupart des cas apportent beaucoup de questions de bon sens. Parce que les services c'est bien, mais finalement on fourre tout dedans.
Par ex. beaucoup d'entreprises qui utilisent JAVA adoptent une couche de services (façades de services) et fourrent non seulement la logique de leur application, mais aussi la logique métier dedans. Le résultat est, comme le dit Fowler, qu'on se retrouve avec des objets métiers qui n'en sont plus et ne sont plus que des gros sacs à setters et getters (Anemic Domain Model). Ca va à l'encontre du concept Objet, mais par contre c'est très facile à maintenir.

Et c'est là que c'est très subtil, comment distinguer ce qui est du ressort des contrôleurs ? du service ? de l'objet métier ? de la façade ? du DAO ? (etc.)

C'est ce genre de questions qui revient le plus souvent. Combien de sujets sur les fofos pour demander où placer une requête ? ou invoquer le modèle ? ou créer les formulaires ?

Mon rêve, c'est d'avoir un fil qui permet petit à petit de remettre tout ça dans l'ordre et évidemment de rester simples pour s'adapter à notre pauvre environnement script smile

Aujourd'hui (et depuis un moment) on nous sert du service, de la façade, du dao, du repository, de l'ORM, récemment "le DDD c'est le top". Essayons de replacer les choses dans leurs contextes.

Le Service pour moi, permet tout simplement de structurer une API par dessus le modèle et ainsi d'apporter de la souplesse dans le développement mais aussi des possibilités d'ouverture (webservices).
Mais ce n'est pas pour autant que le service doit tout porter.


Essayons de formuler un cas réel d'utilisation.

Nous voulons permettre à un utilisateur de créer des articles sur notre site.
L'utilisateur rempli donc un formulaire. Les données saisies sont ensuite validées par le serveur (et pas seulement par javascript !).
Si elles sont invalides, le formulaire déjà peuplé est ré-affiché avec des messages d'erreur.
Si elles sont valides, l'article est enregistré en base de données et l'utilisateur est redirigé sur une nouvelle page, par ex. l'article qu'il vient de saisir.

Quel est l'intérêt du service ici ?

A première vue, aucun. Le service n'est pas du tout obligatoire pour designer correctement cette application grâce à la POO (cf. Ruby par ex.).

Nous pourrions tout simplement créer nos objets métiers depuis les contrôleurs à partir du formulaire et demander directement à la couche d'accès aux données de faire persister cet objet.

Maintenant, notre site a énormément de succès, beaucoup de demandes nous parviennent pour pouvoir accéder aux articles et les manipuler directement sans passer forcément par notre site à nous.

C'est là que le service prend tout son sens. Je peux grâce aux services construire une API simple permettant de manipuler mon modèle (mes articles). De mon côtés mes contrôleurs n'ont qu'à communiquer avec cette API directement et je peux donner accès à l'API à des tiers via des webservices, facile.

Sur le papier c'est simple, mais de là découlent beaucoup de questions :

Qui construit l'objet métier ?

Ça pourrait être fait par toutes les couches, le contrôleur, l'objet lui même ou le service. Il n'y a pas LA bonne pratique.

Le contrôleur pourrait très bien créer l'objet et utiliser les setters pour le construire. Mais ça voudrait dire que le contrôleur est au courant du métier et sait donc quelles sont les propriétés à attribuer à l'objet. Pour moi c'est pas une bonne approche. Le contrôleur n'est pas au courant du métier, il sait juste comment utiliser des outils pour manipuler le modèle.

Au mieux, le contrôleur pourrait créer l'objet en lui envoyant toutes les données qu'il a, laissant l'objet se construire lui même avec ces données (new Article($form)), et ensuite appeler une méthode save() du service ArticleService.

En considérant que nous avons une API permettant de manipuler le modèle, il me parait plus logique de confier cette tâche à l'API. Le contrôleur qui consomme les méthodes du service reçoit les données du formulaire et demande simplement au service d'enregistrer un objet Article avec ces données.

Tout ceci est efficace à condition évidemment de structurer correctement les données qui sont attendues par le service.

Dans ce cas, qui valide les données ?

Un objet validateur spécifique, invoqué par le service ?

Les données sont validées directement dans le service ?

Tout dépend de comment on définit la "validation". Je reprend un exemple que j'ai vu sur le net et plutôt bien choisi.
Imaginons un paiement en ligne. L'utilisateur saisit un numéro de carte de crédit mais le nombre de chiffres ou le numéro ne correspond pas à un numéro de carte bancaire, c'est une erreur de validation. Maintenant le numéro de carte est syntaxiquement valide, mais la transaction est refusée par sa banque, est-ce une erreur de validation ?

L'utilisateur saisit "cent" au lieu de "100" dans le champ "montant", c'est une erreur de validation. Maintenant il saisit "100" mais il n'a pas les provisions suffisantes sur son compte bancaire, c'est une erreur de validation ?

L'utilisateur saisit correctement tous les champs, mais la transaction est refusée parce que sa carte est expirée. C'est une erreur de validation ?

Enfin je pense que vous avez compris smile

On distingue donc plusieurs types de validation.
Les validations des cohérences en terme de métier ne devraient-elles pas êtres assurées par les objets métiers directement et non pas par les services ? Alors que les erreurs de "transactions" devraient, elles, être gérées par les services.

Les objets devrait être "validable" et donc implémenter par exemple une interface "validatable" contenant une méthode "isValid()". Obligatoire parce que valider les données par les setters n'est pas suffisant. Par ex. l'utilisateur saisit "75001" comme code postal, ce code est valide. Mais il saisit "United States" comme pays, le code postal n'est donc plus valide. Il faut non seulement valider unitairement les données, mais aussi globalement d'un point de vue métier.

Mais si c'est l'objet qui assure cette fonction, comment construire des objets totalement indépendants du framework utilisé ? dois-je me passer des super validateurs et filtres de Zend ? :p

Je peux très bien décider de valider ses données à l'aide du service et d'une classe de validation indépendante. Mais dans ce cas, nos objets métier ne portent plus aucune règle "métier", il y a un truc qui cloche smile

Enfin, comment gérer efficacement les erreurs de "transactions" au sein des services ?

C'est à ce type de questions que j'aimerais qu'on essaie de répondre ensemble. Le sujet est très largement abordé sur le net. Mais ce qui serait bien c'est de réfléchir à une idée de l'implémenter avec PHP et notre beau framework Zend. Sans rentrer forcément dans le détails d'un point de vue code smile


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#8 30-11-2009 21:12:25

nicol@s
Membre
Lieu: Nantes
Date d'inscription: 22-06-2009
Messages: 18
Site web

Re: [Réflexion]Architecture du Modèle (web services, filtres, validation)

Sujet des plus intéressants, je me posais récemment la question de la validation de mes objets métiers et en suis arrivé peu ou proue à la solution de l'interface "validable".

Petite réflexion concernant les contrôleurs de milliers de lignes (oui oui ça existe) je pense que ce n'est pas que la "flemme de refactoriser" mais la peur de casser quelque chose qui marche et de provoquer des régressions.

Personnellement, je n'ai plus peur de refactoriser depuis que j'ai adopté l'écriture quasi systématique de tests unitaires avec PHPUnit et plus récemment Zend_Test (pour mes contrôleurs) et même si ça prend un peu plus de temps à mettre en place, on y gagne au bout du compte, ça oblige à réfléchir à sa conception et surtout à coder "testable" (ie, + de petites méthodes, - de paquets de code illisibles).

En tout cas, super initiative et merci d'apporter un peu de réflexion dans ce monde de brutes smile

Hors ligne

 

#9 01-12-2009 13:56:14

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Réflexion]Architecture du Modèle (web services, filtres, validation)

Intéréssant tout ça.
Je viens de tombé la dessus http://dev.juokaz.com/programming/servi … plications

Hors ligne

 

#10 01-12-2009 19:33:54

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Réflexion]Architecture du Modèle (web services, filtres, validation)

Bonsoir,

Le dev autour des tests c'est l'idéal (mais un peu pénible :p).

Pour le reste, j'ai encore passé pas mal de temps avec des collègues archi, sur le net et sur des groupes de discussions, je viendrai dès que possible faire un petit retour pour compléter la réfléxion smile

D'ailleurs Mr.MoOx j'étais tombé sur cet article pendant mes recherches, certaines idées sont intéressantes, mais je n'adhère pas à tout, j'en parlerai quand je reviendrai faire mon petit rapport :p

A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#11 05-12-2009 00:14:48

citronbleu-v
Membre
Lieu: Béziers ou Arles
Date d'inscription: 03-02-2009
Messages: 79
Site web

Re: [Réflexion]Architecture du Modèle (web services, filtres, validation)

Je ne pense pas que l'objet métier a un quelconque rôle de validation. Pour moi il ne devrait que retourner des valeurs filtrer ou pas et modifier ces données en retournant une Exception si incorrecte.

Le contrôle des données pour savoir si la propriété prix est bien un décimal devrait, selon moi, se faire dans le Service. Imaginons qu'on a un autre Service qui fait des validations différentes sur le même modèle en rajoutant le critère "prix > 2". Le fait que ça soit dans l'objet métier n'irait pas, à moins peut être d'étendre l'objet en utilisant le pattern Proxy. Au pire, je verrai l'objet métier retourner une exception si un Service à mal fait son travail.

Et les validations de transaction sont dans le même bateau que les validations de données à l'exceptions qu'elles peuvent interroger une base de données, mais je les vois également dans le Service avant d'appeler une méthode isValid.

Je me demande comment on pourrait associer l'objet Zend_Form dans notre Service ou alors utiliser comme dit @nicol@s une l'interface de validation.

Hors ligne

 

#12 07-12-2009 15:12:20

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Réflexion]Architecture du Modèle (web services, filtres, validation)

Salut,

En réfléchissant et en discutant avec des potes archi, on en vient à la même conclusion. Il est plus simple de valider les données dans une couche à part, par ex. des validateurs.

Ex, j'aurais dans un service :

Code:

public function createAlbum($albumData, $userId)
{
    $user = $this->_userRepository->find($userId); // repository ou DAO
    if (!$data = $this->_albumValidator->validate($albumData)) {
        // ....
    }
    $album = $user->makeAlbum($data);
    $this->_userRepository->save($user);
        
    return $album;
}

Une instance de "Service_Validator_Album" étant injecté (IOC) automatiquement au runtime dans la propriété "albumValidator" du service. Ce validator n'étant ni plus ni moins qu'une extension de Zend_Form implémentant une interface.

Mais, ça pose plusieurs problèmes. D'une, si c'est le service qui valide, il faut quand même bien retourner des erreurs à un moment donné si la validation foire, pour que la vue puisse les afficher à l'utilisateur (cas d'un formulaire). Ensuite, il faudra pouvoir repeupler un formulaire avec les données précédemment saisies par l'user.
Et ce n'est pas si simple, parce que mon service, de base, doit retourner un objet Model_Album si tout s'est bien passé, et sinon quoi ?
- Un objets genre Errors ? Mais dans ce cas ça m'oblige à tester le type d'objet en retour pour savoir si j'ai des erreurs de validation ou non. Dans mon controlleur ça va encore (même si c'est pas terrible du tout), mais si je fais un webservice ça ne va plus. Et comment repeupler mon formulaire ?
- Une Exception ? Comment retourner mes erreurs de validation et mes données au controller/vue ?

Il faudrait un automatisme à base d'injection ou d'AOP pour que tout soit transparent. Avec Zend_Form je ne sais pas trop comment faire encore.

Je planche sur le sujet en ce moment.

A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages