Bonjour à tous, j'ai une petite question, j'essaie de créer un modèle qui permet d'imprimer une lettre standard avec à l'intérieur les informations du client. J'ai déjà fait une action pour envoyer des courriels qui fonctionnent mais lorsque j'essaie d'envoyer ce courrier, il ne fonctionne pas, Il doit y avoir un problème sur le côté de la pièce jointe. J'utilise actuellement Sonata Admin on Symphony 3.3. Donc, à la réception de ce courrier, nous pouvons ouvrir le html de la pièce jointe, puis imprimer la page html. Pensez-vous que cela peut fonctionner ? Que faire pour le faire fonctionner ? Cette solution est-elle viable? Je ne vois aucune autre .... Vous pouvez trouver mon code ici:
ClientAdmin.php :
ClientAdminController.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public function configureBatchActions($actions) { if ( $this->hasRoute('edit') && $this->hasAccess('edit') && $this->hasRoute('delete') && $this->hasAccess('delete') ) { $actions['send_mail'] = [ 'label' => 'Send E-mail', 'ask_confirmation' => true ]; } { $actions['send_letter'] = [ 'label' => 'Send Letter', 'ask_confirmation' => true ]; } return $actions;
service.yml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 class ClientAdminController extends BaseController { public function batchActionSendLetter(ProxyQueryInterface $query) { $this->admin->checkAccess('batchDelete'); try { $clients = $query->execute(); $this->sendLetter($clients); $this->addFlash('sonata_flash_success', 'E-mail send'); } catch (ModelManagerException $e) { $this->handleModelManagerException($e); $this->addFlash('sonata_flash_error', 'Error'); } return new RedirectResponse($this->admin->generateUrl( 'list', ['filter' => $this->admin->getFilterParameters()] )); } public function sendLetter($clients) { foreach ($clients as $client) { $data = \Swift_Attachment::fromPath('attach.html.twig', 'application/html');} $message = \Swift_Message::newInstance() ->setSubject("Test") ->setFrom(' mymail') ->setTo('mymail@') ->setBody( $this->renderView('sendmail.html.twig', array('client' => $client)), 'text/html'); $message->attach($data); $this->get('mailer')->send($message); return $this->redirect('/admin/dashboard'); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 admin.clients: class: AppBundle\Admin\ClientAdmin tags: - { name: sonata.admin, manager_type: orm,group : Register, label: Clients, show_mosaic_button: false} arguments: - ~ - AppBundle\Entity\Client - AppBundle:ClientAdmin calls: - [ setTemplate, ['edit', "print.html.twig"]]
attach.html.twig :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <script> var win = window.open(); var output = ''; var print = function() { output = '<div> Dear ' + 'this is a letter to you.<br/>' + 'Yours sincerely, .... '+ '{{ client.surmane }} <br/>' + '{{ client.address }}</div>'+ '<div style="page-break-after:always"></div>'; win.document.write(output); } print(); </script>
Le probleme que je rencontre c'est que je dois concaténer dans $data des fichiers HTML pour que ça marche mais je ne sais pas comment faire et si c'est possible.
Merci d'avance, si vous avez besoin de quelque chose d'autre, demandez j'essaierai de vous le fournir.
Partager