Pokazywanie postów oznaczonych etykietą bundle. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą bundle. Pokaż wszystkie posty

2015-04-03

Symfony2 i generowanie plików PDF

KnpSnappyBundle

Do generowania plików PDF w Symfony2 wiele osób poleca bundla o nazwie KnpSnappyBundle. Wykorzystuje on jednak wkhtmltopdf (open source'owe konsolowe narzędzie do tworzenia plików PDF na podstawie HTML), które trzeba dodatkowo zainstalować na serwerze produkcyjnym (wraz z wieloma innymi bibliotekami). To według mnie spora wada tego bundla ale jeszcze do przeskoczenia. Większym minusem wkhtmltopdf jest to, że PDF'y na różnych maszynach generują różne pliki PDF. Różnice są niby niewielkie ale przy mojej pracy zupełnie dyskwalifikujące to rozwiązanie.

PdfBundle

PdfBundle autorstwa Piotra Śliwy eliminuje wady wcześniej omówionego bundla. Nie trzeba na serwerze instalować osobnych  systemowych narzędzi i na każdej maszynie wydruk wygląda identycznie. PdfBundle korzysta z biblioteki PHPPfd tego samego autora. PHPPfd tworzy pliki PDF (lub pliki graficzne) na podstawie plików XML co może być to istotną wadą dla niektórych użytkowników. Dla mnie jednak jest to rozwiązanie niemal idealne.

PdfBundle - problem z img

Podczas pracy trafiłem na problem, który zawieszał całego Apache'a przy próbie wygenerowania pliku PDF z dużym plikiem jgp:

    
        
    

Aby pozbyć się problemu wystarczy element dynamic-page zmienić na page - czyli:

    
        
    

2014-05-30

[php][symfony] FOSUserBundle - modyfikacja routingu

Cel


Zmienić ścieżkę logowania z:

moja_witryna.lh/login
na:

moja_witryna.lh/xyz_login

Rozwiązanie


Aby tego dokonać wystarczą dwa proste kroki przedstawione poniżej.

Usuwamy domyślny routing fos_user_security i dajemy własny


W pliku routing.yml modyfikujemy zapis

fos_user_security:
    resource: "@FOSUserBundle/Resources/config/routing/security.xml"

na:

fos_user_security_login:
    pattern: /xyz_login
    defaults: { _controller: FOSUserBundle:Security:login }

fos_user_security_check:
    pattern: /xyz_login_check
    defaults: { _controller: FOSUserBundle:Security:check }

fos_user_security_logout:
    pattern: /xyz_logout
    defaults: { _controller: FOSUserBundle:Security:logout }

Modyfikujemy security.yml


Zmieniamy:

firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true

na:

firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
                login_path: fos_user_security_login
                check_path: fos_user_security_check
            logout:
                path: fos_user_security_logout
            anonymous:    true