Mit der Java-basierten Software Keycloak wird die Verwaltung und Authentifizierung von Nutzern zentral gelöst. Hierbei bleiben kaum Wünsche offen: egal ob nun ein Registrierungsprozess, die Integration mit Social Logins (Google, Facebook, usw.) oder LDAP gewünscht ist, mit Keycloak lassen sich diese Themen sehr flexibel umsetzen. Auch erweiterte Features, wie etwa eine 2-Faktor-Authentifizierung, sind möglich.
Um Keycloak mit Symfony zu integrieren, ohne sich mit der Security-Komponente von Symfony im Detail auseinandersetzen zu müssen, bietet sich dieses Bundle an.
Bereits seit einigen Jahren gibt es das BazingaJsTranslationBundle, welches es erlaubt, den Symfony Translator auch Client-seitig zu verwenden. Auch in Zikula kommt dieses Bundle zum Einsatz, allerdings gab es auch immer mal wieder kleinere Defiziten zu bewältigen.
Nun gibt es einen offiziellen Nachfolger oder Ersatz: der aktuell noch als experimentell gekennzeichnete UX Translator bringt einige Verbesserungen mit, welche die Nutzung vereinfachen. So wird zum Beispiel auch die Intl ICU Syntax unterstützt.
Der Symfony Messenger kann über unterschiedliche Transporte mit diversen Queue-Technologien eingesetzt werden, zum Beispiel AMQP, Redis, Amazon SQS oder Doctrine. Um die Messages in den Queues anschauen zu können, stehen je nach Anbieter verschiedene Möglichkeiten zur Verfügung. So bietet etwa RabbitMQ eine Management-UI, mit der unter anderem solche Aufgaben erledigt werden können.
Sofern Bedarf entsteht direkt in Symfony zu erfahren, wie voll eine bestimmte Queue ist oder welche Nachrichten sich darin befinden, könnte sich das messenger-monitor-bundle anbieten.
In Symfony gibt es mit der Mime-Komponente eine komfortable Möglichkeit, MultiPart-Nachrichten zu erstellen. Nicht out of the box enthalten ist aber ein Interface, das den Zugriff auf die in eingehenden MultiPart-Requests enthaltenen Bestandteile erlaubt.
Diese Lücke füllt das MultipartUpload-Bundle. Mit einem Event-Listener, der auf das Kernel-Event kernel.request hört, werden eingehende Requests daraufhin untersucht, ob sie mehrere Parts beinhalten. Ist dies der Fall, werden die einzelnen Teile extrahiert und in Request-Attributen bereitgestellt.