Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je souhaite afficher une page devant être imprimée après validation du traitement par l'utilisateur.
Pour la création de la page pas de problème, par contre est-il possible d'utiliser le controller ou les views pour :
- afficher la page à imprimer dans une nouvelle fenêtre-instance du navigateur ?
- afficher la page de l'application dans la fenêtre-instance principale du navigateur, après que l'utilisateur est demandé la validation ?
Explications supplémentaires pour me faire "plus mieux" comprendre :
- L'application contient une fenêtre-instance principale du navigateur où toutes les actions sont gérées (ajout-modification-suppression-validation).
- A la validation par l'utilisateur les actions suivantes faites :
- mise à jour dans plusieurs base de données.
- impression de la liste des éléments validés.
- affichage de la liste avec les élements non validés.
Les questions sont :
- Comment ouvrier une nouvelle fenêtre-instance du navigateur avec la page au format imprimable avec le controller - les views ?
- Est-il possible avec le controller d'afficher "aussi" la fenêtre-instance principale contenant la liste des élements restants à valider ?
Merci pour votre aide.
Dernière modification par abon (28-08-2007 11:34:41)
Hors ligne
Avec du javascript tout simplement je pense....tu devrais vite trouver en cherchant de ce côté.
Ensuite il suffit de faire ta vue comme tu veux que la page soit imprimer.
Hors ligne
Bonjour,
Merci pour ta réponse.
Mais les questions concernent plus le fonctionnement du controller lorsqu'il doit afficher deux pages :
- une pour l'impression, avec peut être un peu de javascript pour l'ouverture dans une nouvelle fenêtre.
- une pour la liste des éléments restants.
Hors ligne
Passe un argument supplémentaire au controller du genre viewmode=print. Et si viewmode=print habille ta vue avec un layout et une feuille de style destiner au print.
Hors ligne
pour l'impression trois stratégies qui ont des avantage et des d'inconvénients
1) produire une page pour l'affichage dans le navigateur avec une feuille de style dédié à l'impression <link media="print" href="/styles/print.css" type="text/css" rel="stylesheet" /> cela ne demande donc rien de particulier du côté php. l'utilisateur n'a qu'a imprimer la page pour qu'elle sorte formaté pour l'impression (il est possible d'ajouter un petit bouton ou lin javascript pour déclencher l'impression dans la page. inconvénient il n'est pas simple de faire une super présentation css pour l'impression qui passe sur tout type d'imprimante.
2) PDF cette solution consiste à produire un document pdf en php. cela permet d'avoir un document non modifiable qui pourra être imprimé convenablement sur tout type d'imprimante. inconvénient générer du pdf n'est pas aussi simple qui page html
3) docxml ou xlsxml cette solution offre l'avantage de la simplicité. il suffit de produire un flux xml bien formaté pour que l'utilisateur le voit s'ouvrir dans word ou excel. il à alors à sa disposition toutes les fonctionnalités de'office pour l'impression mais aussi l'intégration dans ses propre document (olé) il suffit d'ouvrir word ou excel 2003 minimum de créer un doc type de ce qu'on veut obtenir et de faire enregistrer sous -> xml on obtient alors le modèle de doc xml que l'on peut utiliser directement en php pour insérer ses données. inconvénients il faut que l'utilisateur dispose d'office ou équivalent pour afficher et imprimer le document.
A+JYT
Hors ligne
Ou alors cré 2 actions différentes .
Tu fait le premier rendu dans le navigateur principal, qui à la fin appel avec du javascript pour ouvrir dans une nouvelle fenêtre l'url de l'autre action
Hors ligne
Bonjour,
Trouvé une solution, pas vraiment propre mais bon ...
Dans la page :
<body onLoad="javascript:window.print(); document.getElementById('frmListe').submit();">
......
<form id="frmListe" name="frmListe" method="POST" action="'.$this->baseUrl.'/details" />
- La page à imprimer est affichée le temps de la voir clignoter....
- La page contenant la liste avec le reste est affichée à sa place
Pour le rendu de la page imprimée, une feuille de style suffira, pour le moment les utilisateurs ont une feuille et un crayon, au mieux un stylo ...
Merci pour vos réponses.
Hors ligne
dans une balise comme onload il n'y a pas besoin d'ajouter 'javascript:' !
donc dans ta balise BODY il faut mettre :
<body onLoad="window.print(); document.getElementById('frmListe').submit();">
Hors ligne
Pages: 1