Cookies und Sessions unter Symfony 2

Wer als PHP Entwickler Daten über seine Benutzer zwischen speichern möchte wählt in aller Regel dafür Sessions oder Cookies. Der übliche Weg dafür ist session_start sowie setCookie. Wer das erste mal mit Symfony arbeitet und diesen Weg beschreitet wird vor einigen Problemen stehen, denn beide Varianten funktionieren so nicht unter Symfony.

Symfony liefert jedoch von sich aus zwei sehr gute Möglichkeiten Daten über den Benutzer (egal ob real Person, Bot oder Web Service) mittels eines eigenem Session Systems.

Sessionmanagement.

Um eine einen einfachen String in ein Session Objekt zu speichern geht man unter Symfony 2 folgendermaßen vor:

Sollte das Attribut nicht existieren, wird die funktion false zurückgeben

Eine Möglichkeit um eine Mehrsprachigkeit zu realisieren würde die festlegung der Sprache wie folgend aussehen:

Um herauszufinden ob ein Request schon eine begonnene Session hat geht man folgendermaßen vor:

Weiterführende Informationen über das Request Objekt findet man hier und über das Session Objekt  hier.

Cookiemanagement

Cookies zu verwenden ist ein bischen aufwendiger, hat aber natürlich auch mehr Möglichkeiten. Beispielsweise ist sogar eine Verkettung möglich, um den Wert oder den Namen eines Cookies auf eine Variable verknüpfen.

 

Cookies löschen geht über die clearCookie() Methode.

 

Weiterführende Informationen bekommt man wie immer über die sehr gute  Symfony 2 Dokumentation.

Original dieses Tutorials:

Manage Cookies And Sessions In Symfony2 von Julien le Coupanec

FOSUserBundle Twig Ausgabe von PlainPassword steuern

Im normalfall hat man in seinem Registrierungsformular für die Darstellung des Inputfeldes für Passörter folgendes Konstrukt stehen:

FOS baut daraus zwei Inputfelder mit den dazugehörigen Labels. Der Nachteil ist das keinerlei Einfluß auf die Ausgabe genommen werden kann, da ja beide Inputfelder automatisiert ausgegeben werden.

Nach etwas recherche und ausprobieren bin ich zu folgendem Ergebnis gekommen. Man kan die Inputfelder sowie die dazugehörigen Labels voneinander Trennen indem man sie “Objektlike” anspricht.

Der zugehörige Aufruf sieht dann folgendermaßen aus:

Auf diese Weise ist es nun möglich die Eingabefelder in <td>’s oder <div>’s unterzubringen und mittels CSS an das Design anzupassen.