cocoon-users-fr mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marc Salvetti <m...@notremanou.net>
Subject Re: Rappel du form template en cas d'erreur ?
Date Thu, 15 Sep 2005 04:41:23 GMT
Salut Laurent,

A mon avis, ce que tu veux faire est possible. Ton pb ressemble a une 
erreur ds l'enchainement des pipes.
J'ai une config a peu pres similaire au niveau des composantes (menu, 
header, page centrale etc...), et je me souviens avoir longtemps tourné 
en rond pour arriver a regler le pb que tu decris.
Finalement l'idee est assez simple, il suffit d'avoir un matcher du 
genre *.showform qui fait exactement la meme chose que ton matcher 
*.html, et de passer a ta fct flowscript un "display-pipeline" du genre 
monform.showform. a mon avis, que ce soit du map:aggregate ou du 
cinclude pour composer la page ne change pas grd chose au pb.
Je sait pas si je suis très clair du coup je donne un petit exemple  :)

                <map:match pattern="**form-*.html">
                    <map:call function="handleForm">
                        <map:parameter name="function" 
value="form_{2}2xml"/>
                        <map:parameter name="display-pipeline" 
value="form-{2}.showform"/>
                        <map:parameter name="form-definition" 
value="forms/admin/{2}-definition.xml"/>
                        <map:parameter name="documentURI" 
value="cocoon:/data/{2}"/>
                        <map:parameter name="bindingURI" 
value="forms/admin/{2}-binding.xml"/>
                        <map:parameter name="success-pipeline" 
value="{2}_success.html"/>
                    </map:call>
                </map:match>
                <map:match pattern="**.html">
                    <map:call resource="composite">
                        <map:parameter name="URI" value="{1}"/>
                        <map:parameter name="prefix" value="admin/"/>
                        <map:parameter name="locale" value="{../locale}"/>
                    </map:call>
                </map:match>
                <map:match pattern="**form-*.showform">   
                    <map:call resource="composite">
                        <map:parameter name="URI" value="{1}form-{2}"/>
                        <map:parameter name="locale" value="{locale}"/>
                        <map:parameter name="form" value="true"/>
                    </map:call>
                </map:match>

Et dans la resource composite, tu compose la page du site avec la 
methode qui te plait.

Marc


Laurent Perez a écrit :

>>Une page d'erreur générique? Et pourquoi ne pas réafficher la même page
>>avec l'indication de l'erreur de saisie. Cocoon Forms est fait pour ça,
>>tout de même :-)
>>    
>>
>
>oui, c'est le comportement logique des CForms, mais j'ai voulu faire
>quelque chose qui à priori pose problème :
>
>j'ai une interface d'administration plutôt basique : un header avec
>quelques liens comme "logout" par ex., un menu à gauche pour
>sélectionner une section à administrer, un footer, et enfin un écran,
>qui affiche les CForms.
>
>plutôt qu'utiliser un map:aggregate qui regroupe les quatre morceaux,
>suivi d'une transfo xsl qui transforme tout, j'ai fait un squelette
>(JXTemplate), qui utilise des <cinclude> vers des patterns internes
>(comme cocoon:/menu.xml, cocoon:/header.xml, etc. mais surtout des
>choses comme cocoon:/forms/ajouterUnTruc.form) pour construire la page
>complète, le squelette reçoit ensuite une transformation cinclude,
>puis une transfo i18n à la fin.
>
>au 1er appel ça fonctionne, le flux issu de
>cocoon:/forms/ajouterUnTruc.form est bien inclu dans le JX, j'ai un
>joli formulaire :)
>
>mais quand une erreur de validation survient, showForm rappelle le
>pattern cocoon:/forms/ajouterUnTruc.form, et je me retrouve assez
>logiquement avec juste un formulaire et ses indicateurs de saisie, et
>pas le JX contenant les autres morceaux.
>
>ça ressemble à une erreur de design de ma part (pas taper), je voulais
>eviter de faire un pattern par CForm, qui aggrege toujours les trois
>mêmes morceaux, le quatrieme changeant à chaque fois (CForm
>différent), mais visiblement injecter les CForms avec un cinclude
>était pas une bonne idée.
>
>voilà, c'est un peu long, mais je le laisse pour les archives :)
>
>laurent
>
>---------------------------------------------------------------------
>Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
>Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
>Autres commandes : mailto:users-fr-help@cocoon.apache.org
>
>
>
>
>  
>

---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Mime
View raw message