Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony]wkhtmltopdf oraz twig
PawelC
post 13.06.2018, 19:46:43
Post #1





Grupa: Zarejestrowani
Postów: 1 154
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Witam,
Mam następujący problem. Posiadam w bazie danych tabele meeting, w niej id, guest,host, start_time,end_time oraz table_numer. Do generowania używam wkhtmltopdf oraz symfony 3, samo generowanie pdf to żaden problem, niestety Twig nie chce ze mną współpracować. Chciałbym zrobić tak, aby najpierw wygenerowało spotkania dla stolika 1, później dla 2 itd. Cały proces powinien wyglądać tak:
- Początek generowania pdf dla stolika 1
- Zmienia się stolik z 1 na 2, następuje page break i zaczyna generować nową stronę ze spotkaniami dla stolika 2 itd

Problem polega na tym, że generuje mi pdf dla stolika 1, po czym dorzuca 1 spotkanie dla stolika 2. Zaczyna generować pdf dla stolika 2, na koniec wrzuca mi 1 spotkanie ze stolika 3. Tak wygenerowany pdf wygląda tak: http://cyrklaf.eu/table.pdf
Nie mam pojęcia gdzie jest błąd, że zawsze pobiera jedno spotkanie z innego stolika. Mój kod Twig bo w nim leży problem:
  1. <!doctype html>
  2.  
  3. <html lang="pl">
  4. <meta charset="utf-8">
  5. body {
  6. background: #FFF;
  7. }
  8.  
  9. .page {
  10. page-break-after: always;
  11. }
  12. </style>
  13. </head>
  14. {% set last_table = 1 %}
  15. {% for meeting in meetings %}
  16. <div class="page">
  17. {{ meeting.guest }} {{ meeting.host }} stolik obecny {{ meeting.tableNumber }} stolik poprzedni {{ last_table }}
  18.  
  19. {% if meeting.tableNumber != last_table %} // Jeżeli obecny stolik jest inny od ostatniego powinien zakończyć generowanie i rozpocząc dla kolejnego stolika
  20. {% set last_table = meeting.tableNumber %}
  21. </div>
  22. {% endif %}
  23.  
  24. {% endfor %}
  25. </body>
  26. </html>

Chciałbym aby po skończeniu generowania spotkań dla stolika 1, zaczął generować kolejną stronę ale dla stolika 2 itd

Ten post edytował PawelC 13.06.2018, 19:53:15


--------------------
Warsztat: PHP, MySQL, Postgresql, MongoDB, Symfony Framework, Jira, GIT, Swagger, PHPUnit, REST Api
System operacyjny: Linux Arch
Edytor PHP: PHPStorm + Symfony Plugin
Go to the top of the page
+Quote Post
Neutral
post 13.06.2018, 19:59:14
Post #2





Grupa: Zarejestrowani
Postów: 187
Pomógł: 26
Dołączył: 10.01.2016

Ostrzeżenie: (0%)
-----


Musisz napisać w skrypcie, aby pętla jechała od iteracji drugiej (stolika drugiego), a nie od nowa od pierwszego (pierwszej iteracji).

Musisz chyba dodać warunek w tym for, przykład z doc.:

Kod
{% for user in users if user.active %}
// ...
{% endfor %}


Czy nie powinno być:
Kod
{% for meetings in meeting %}

?

Pokaż jakie masz wartości w tym meetings, meeting, itd.. (pokaż tylko 2-3 początkowe wartości).

A może po prostu tak napisz:

PSEUDO-CODE:
Kod
{% set last_table++ %}

Zinkrementuj zmienną, żeby liczyła od drugiego stolika, a nie od pierwszego.

Gdzie w poniższym kodzie masz break'a, czy coś:
Kod
{% if meeting.tableNumber != last_table %}

?

Ten post edytował Neutral 13.06.2018, 20:25:42
Go to the top of the page
+Quote Post
PawelC
post 13.06.2018, 20:21:59
Post #3





Grupa: Zarejestrowani
Postów: 1 154
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Jak zrobię tak jak napisałeś tzn
  1. for meetings in meeting
to dostaję Variable "meetings" does not exist.

Zrzut bazy danych z tą tabelą: cyrklaf.eu/Dump20180613.sql
Baza wygląda tak:



--------------------
Warsztat: PHP, MySQL, Postgresql, MongoDB, Symfony Framework, Jira, GIT, Swagger, PHPUnit, REST Api
System operacyjny: Linux Arch
Edytor PHP: PHPStorm + Symfony Plugin
Go to the top of the page
+Quote Post
Pyton_000
post 13.06.2018, 20:27:03
Post #4





Grupa: Zarejestrowani
Postów: 7 454
Pomógł: 1316
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Kod
<div class="page">
{% for meeting in meetings %}
    {{ meeting.guest }} {{ meeting.host }} stolik obecny {{ meeting.tableNumber }} stolik poprzedni {{ last_table }}

    {% if meeting.tableNumber != last_table %} // Jeżeli obecny stolik jest inny od ostatniego powinien zakończyć generowanie i rozpocząc dla kolejnego stolika
        {% set last_table = meeting.tableNumber %}
        </div>
        <div class="page">
    {% endif %}

{% endfor %}
</div>

l
Teraz musisz tylko sobie dodać warunek żeby nie generowało Ci ostatniej pustej strony.

Ten post edytował Pyton_000 13.06.2018, 20:27:32
Go to the top of the page
+Quote Post
PawelC
post 13.06.2018, 20:37:39
Post #5





Grupa: Zarejestrowani
Postów: 1 154
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Niestety efekt jest ten sam cyrklaf.eu/table2.pdf sad.gif

Ten post edytował PawelC 13.06.2018, 20:37:56


--------------------
Warsztat: PHP, MySQL, Postgresql, MongoDB, Symfony Framework, Jira, GIT, Swagger, PHPUnit, REST Api
System operacyjny: Linux Arch
Edytor PHP: PHPStorm + Symfony Plugin
Go to the top of the page
+Quote Post
Pyton_000
post 13.06.2018, 20:40:34
Post #6





Grupa: Zarejestrowani
Postów: 7 454
Pomógł: 1316
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Wypluj to co twig generuje do HTML i pokaż
Go to the top of the page
+Quote Post
PawelC
post 13.06.2018, 20:44:56
Post #7





Grupa: Zarejestrowani
Postów: 1 154
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


  1. """
  2. <!doctype html>\n
  3. \n
  4. <html lang="pl">\n
  5. <head>\n
  6. <meta charset="utf-8">\n
  7. <style>\n
  8. body {\n
  9. background: #FFF;\n
  10. }\n
  11. \n
  12. .page {\n
  13. page-break-after: always;\n
  14. }\n
  15. </style>\n
  16. </head>\n
  17. <body>\n
  18. <div class="page">\n
  19. ipsum lorem stolik obecny 1 stolik poprzedni 1\n
  20. <br/>\n
  21. \n
  22. dolor sit stolik obecny 1 stolik poprzedni 1\n
  23. <br/>\n
  24. \n
  25. lorem puszek stolik obecny 1 stolik poprzedni 1\n
  26. <br/>\n
  27. \n
  28. laura karolina stolik obecny 1 stolik poprzedni 1\n
  29. <br/>\n
  30. \n
  31. sit laura stolik obecny 2 stolik poprzedni 1\n
  32. <br/>\n
  33. \n
  34. \n
  35. </div>\n
  36. <div class="page">\n
  37. dolor reverse stolik obecny 2 stolik poprzedni 2\n
  38. <br/>\n
  39. \n
  40. reverse pawel stolik obecny 2 stolik poprzedni 2\n
  41. <br/>\n
  42. \n
  43. puszek lorem stolik obecny 2 stolik poprzedni 2\n
  44. <br/>\n
  45. \n
  46. pawel pysia stolik obecny 3 stolik poprzedni 2\n
  47. <br/>\n
  48. \n
  49. \n
  50. </div>\n
  51. <div class="page">\n
  52. pysia laura stolik obecny 3 stolik poprzedni 3\n
  53. <br/>\n
  54. \n
  55. </div>\n
  56. </body>\n
  57. </html>
  58. """


--------------------
Warsztat: PHP, MySQL, Postgresql, MongoDB, Symfony Framework, Jira, GIT, Swagger, PHPUnit, REST Api
System operacyjny: Linux Arch
Edytor PHP: PHPStorm + Symfony Plugin
Go to the top of the page
+Quote Post
Pyton_000
post 13.06.2018, 21:07:19
Post #8





Grupa: Zarejestrowani
Postów: 7 454
Pomógł: 1316
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


No to już powinieneś widzieć rozwiązanie. Najpierw wyświetlasz a potem wstawiasz separator strony wink.gif
Go to the top of the page
+Quote Post
PawelC
post 13.06.2018, 21:10:40
Post #9





Grupa: Zarejestrowani
Postów: 1 154
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Przyznam szczerze,  że nie widzę rozwiązania ;/ długo się już z tym bawię i nadal nic


--------------------
Warsztat: PHP, MySQL, Postgresql, MongoDB, Symfony Framework, Jira, GIT, Swagger, PHPUnit, REST Api
System operacyjny: Linux Arch
Edytor PHP: PHPStorm + Symfony Plugin
Go to the top of the page
+Quote Post
Pyton_000
post 13.06.2018, 21:15:55
Post #10





Grupa: Zarejestrowani
Postów: 7 454
Pomógł: 1316
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


No przecież ci napisałem gdzie masz błąd.
Go to the top of the page
+Quote Post
LowiczakPL
post 19.06.2018, 17:58:38
Post #11





Grupa: Zarejestrowani
Postów: 313
Pomógł: 21
Dołączył: 3.01.2016
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Ja używam w Symfony i w Laravelu TCPDF-a zainstaluj sobie paczkę i będziesz miał po problemie.

TCPDF pozwala generować PDF-y z kodu HTMLa, więc masz pole do popisu.

TCPDF HTML

XHTML + CSS

Git TCPDF



--------------------
Poszukuję zleceń najlepiej w Symfony, Laravel, ... PHP, MySQL, Back-End, Front-End, mogę pomóc też z Unity
Go to the top of the page
+Quote Post
Pyton_000
post 21.06.2018, 07:34:00
Post #12





Grupa: Zarejestrowani
Postów: 7 454
Pomógł: 1316
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


@LowiczakPL naucz się czytać w końcu i albo odpowiadaj na pytanie które zostało zadane albo nie odpowiadaj wcale bo twoja odpowiedź NIC nie wniosła do tematu. BA nawet nie rozwiąże problemu bo nie jest on związany z programem którego używa a z KODEM HTML.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 17.08.2018 - 02:08