Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
bonjour,
j'essaye de réaliser un générateur de PDF paramétré décrit dans le lien suivant
https://packages.zendframework.com/docs … edocx.html
mais j'ai aucune idée ou mettre ces bout de code et même d'ou commencer ?
je serai reconnaissant si quelqu'un peut m'aider en mentionnant par quoi commencer et qu'est ce que je dois configurer au juste ( ini, bootstrap,views .. etc ) pour réaliser ce qui est décrit dans le tuto.
Merci
Hors ligne
Salut, tu peux faire ça dans ta couche service j'ai survolé vite fait mais ça fonctionne sous webservice soap donc ton application va recevoir une requête soap avec toutes les informations et en retour te fournira ton doc.
Hors ligne
merci pour votre réponse ,
Elle semble intéressante votre démarche mais j'aime bien implémenter tout sur le même serveur et garder le développement aussi simple que possible , pouvais vous me conseiller d'une manière simple pour réaliser mon générateur PDF.
merci
Hors ligne
Bah je viens de te la donner. T'explique pas grand chose ... C'est comme si tu me demandais comment mettre du carburant dans ta voiture, je vais te répondre à une station essence mais je saurais pas te dire si tu dois mettre du gazoil, SP etc ... Ce que tu veux utiliser c'est du soap donc je vois pas ce que vient faire la notion de serveur. Donc si tu veux plus d'aide fais l'effort de bien expliquer ton problème.
Hors ligne
alors , concernant ce que je veux faire :
une vue avec un seul bouton , en cliquant sur ce dernier , le Contrôleur déclenche une fonction usedoc() qui va implémenter (normalement) ce qui est décrit dans le tuto c.a.d lire la Template , affecter les valeurs pour les field et générer un document final de format PDF .
alors qu'elle sont les étapes a suivre pour réaliser cette application ( pas les étapes standard mais plutôt il ya t il des fichiers de configuration a paramétré (autoloader, application.config..etc ) ou des Packages a installer , même un module prêt qui réalise cette fonctionnalité sera le bien venu .
Merci pour votre aide
Hors ligne
Je comprend pas ce qu'il y a à te préciser. Tu créer une route sur laquelle pointe ton bouton et lors du clique ton contrôleur appelle un service qui va faire ce que tu veux et te retourner le fichier.
Hors ligne
Mon Controlleur
[lang=php]<?php namespace Auth\Controller; use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\ViewModel; use Zend\Authentication\Result; use ZendService\LiveDocx\MailMerge; use Auth\Form\AuthForm; use Zend\Zendservice\LiveDocx\Lodale; class AuthController extends AbstractActionController { public function LoginAction() { $locale = Locale::getDefault(); $timestamp = time(); $intlTimeFormatter = new IntlDateFormatter($locale, IntlDateFormatter::NONE, IntlDateFormatter::SHORT); $intlDateFormatter = new IntlDateFormatter($locale, IntlDateFormatter::LONG, IntlDateFormatter::NONE); $mailMerge = new MailMerge(); $mailMerge->setUsername('Ramy') ->setPassword('') ->setService (MailMerge::SERVICE_FREE); // for LiveDocx Premium, use MailMerge::SERVICE_PREMIUM $mailMerge->setLocalTemplate('license-agreement-template.docx'); $mailMerge->assign('software', 'Magic Graphical Compression Suite v1.9') ->assign('licensee', 'Henry Döner-Meyer') ->assign('company', 'Co-Operation') ->assign('date', $intlDateFormatter->format($timestamp)) ->assign('time', $intlTimeFormatter->format($timestamp)) ->assign('city', 'Lyon') ->assign('country', 'France'); $mailMerge->createDocument(); $document = $mailMerge->retrieveDocument('pdf'); file_put_contents('license-agreement-document.pdf', $document); unset($mailMerge); } }
mais j'ai eu cette erreur
Fatal error: Class 'Auth\Controller\Locale' not found in C:\wamp\www\zend\module\Auth\src\Auth\Controller\AuthController.php on line 13
aidez moi a résoudre ce problème
Hors ligne
Franchement si tu ne met pas de la bonne volonté je vais te laisser te débrouiller tout seul. Tu ne fais aucun effort c'est pas en balançant bêtement ton code qu'on va t'aider. Le but c'est pas de te mâcher le travail mais de t'aider à comprendre tes erreurs or j'ai pas l'impression que tu en ais vraiment envie.
Dans le doute voici quelques pistes :
Le message est clair il te dit que la classe Auth\Controller\Locale n'existe pas, première ligne de ta fonction indexAction.
Pour résoudre ce problème renseigne toi sur les espaces de nom (namespace). La classe Locale (si je dis pas de conneries) appartient à la librairie intl.
D'une part vérifie que tu l'as bien activée dans ta configuration de PHP, d'autre part son namespace n'est pas bon puisque tu ne précises rien.
Deux cas de figures :
- soit tu fais \Locale::getDefault(); (pour lui dire que c'est au namespace racine et pas à partir de celui de ton contrôleur)
- soit tu l'importes avec use en haut de ta classe (c'est le mieux)
Hors ligne
ok merci pour votre aide
Hors ligne
je reviens toujours sur l’affaire de LiveDocx le problème de chargement de classe et je trouve pas de solution
j'ai mis le use tel que vous m'avais recommander donc mon Controlleur.php est le suivant
[lang=php] <?php namespace Auth\Controller; use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\ViewModel; use Auth\Form\AuthForm; use Zend\ZendService\LiveDocx\MailMerge; class AuthController extends AbstractActionController { public function LoginAction() { $form = new AuthForm(); $mailMerge = new MailMerge::MailMerge(); $mailMerge->setUsername('********') ->setPassword('********') ->setService (MailMerge::SERVICE_FREE); // for LiveDocx Premium, use MailMerge::SERVICE_PREMIUM $mailMerge->setLocalTemplate('license-agreement-template.docx'); $mailMerge->assign('software', 'Magic Graphical Compression Suite v1.9') ->assign('licensee', 'Henry Döner-Meyer') ->assign('company', 'Co-Operation') ->assign('date', $intlDateFormatter->format($timestamp)) ->assign('time', $intlTimeFormatter->format($timestamp)) ->assign('city', 'Lyon') ->assign('country', 'France'); $mailMerge->createDocument(); $document = $mailMerge->retrieveDocument('pdf'); file_put_contents('license-agreement-document.pdf', $document); unset($mailMerge); return array('form' => $form); } }
aussi j'ai mis tout la librairie de livedocx(telechargée depuis github dans C:\wamp\www\zend\vendor\zendframework\zendframework\library\Zend
et dedans bien sur il 'ya la classe MailMerge
et l'erreur que j'ai eu :
( ! ) Fatal error: Class 'Zend\ZendService\LiveDocx\MailMerge' not found in C:\wamp\www\zend\module\Auth\src\Auth\Controller\AuthController.php on line 15
quelqu’un peut m'aider ? je galère par tout toujours sans soultion
Hors ligne
Là j'ai pas vraiment l'impression que tu cherches beaucoup... L'installation recommande d'utiliser composer pour l'installer. Certes la doc n'est pas présente mais en réfléchissant un peu tu peux te débrouiller.
Ensuite le message est pourtant claire je vais te le traduire au cas où ...
( ! ) Erreur fatale : La classe 'Zend\ZendService\LiveDocx\MailMerge' n'est pas trouvé dans C:\wamp\www\zend\module\Auth\src\Auth\Controller\AuthController.php à la ligne 15
Donc 2 solutions : soit le namespace n'est pas bon donc il ne peut pas la trouver, soit tu l'as pas mis dans le bon dossier vu que tu l'as téléchargé manuellement.
Enfin depuis quand on fait des new comme ça ?
[lang=php]$mailMerger = new MailMerger::MailMerge()
S'il y a déjà des problèmes là ça va vite poser problème.
Hors ligne
non pardon ça était une faute d’inattention j 'ai instancié comme ceci
$mailMerger = new MailMerge()
et le problème réside toujours dans cette ligne ,je continue a chercher espérant que m'éclairiez le chemin avec votre expérience car j'ai aussi l'installer avec composer et toujours le même problème
Merci
Hors ligne
Là je vois pas ce qu'on peut t'apporter de plus le problème vient de chez toi là. Il trouve pas ta classe donc tu l'as pas mis au bon endroit c'est aussi simple que ça.
Hors ligne