Ivory Becomes FOS Now – CKEditor Bundle for Symfony

Maybe you heard about it: The Symfony Bundle „egeloen/ckeditor-bundle“ was looking for a new maintainer. And the Symfony 4 compatibility was missing. Having the downloads in mind I did not expect it to be that difficult to find new maintainers. At the end Marko Kunic and I took that place. But let us take a look back into the history.
Weiterlesen

Symfony 3 vs. 4: Früher war alles besser … Wirklich?

Ich bin inzwischen in einem Alter, in dem ich – ähnlich wie meine Eltern früher – kopfschüttelnd die Kids von heute beobachte. Emojis, Sprachnachrichten über einen Textmessenger, … Früher war das doch nicht so, oder? Früher war alles besser!
Weiterlesen

Symfony Flex – der Workflow für Symfony 4.0

Im November ist es wieder so weit: Wenn in Cluj die diesjährige Symfony Con stattfindet, wird es auch zur Vorstellung von Symfony 4.0 kommen. Neben einigen Änderungen in der Struktur und Größe einer Symfony-Applikation scheint es eine weitere bahnbrechende Veränderung für Symfony-Applikationen zu geben: Symfony Flex.

Bei Symfony Flex handelt es sich nicht um ein neues Produkt oder ein neues Bundle; vielmehr geht es darum, einen neuen Workflow zu etablieren – einen Workflow, bei dem den Entwicklern beim Erstellen einer Symfony-Applikation einiges an Arbeit abgenommen werden soll.

Weiterlesen

From Vagrant to NixOps

I have been following the development of NixOps for some months. NixOps is a cloud deployment tool using nix, the functional package manager for unix systems. Nix makes it very intuitive to define absolute package dependencies. No more thinking and guessing about required runtime dependencies.
NixOps supports deploying to different platforms. Bare-metal, cloud, and even virtual environments like virtualbox work out of the box. I have worked in many projects using vagrant. Out of curiosity I migrated an existing vagrant project using wasted (Web Application STack for Extreme Development) to nix and NixOps.
This post is a walkthrough to configure a symfony2 project with nginx, mysql, and php-fpm from scratch. Weiterlesen

Neues Release – Symfony CMF 1.3

Zeit wird es! Gestern haben wir ein neues Release für das Symfony CMF getagged. Da das CMF kein monolitisches Stück Software ist, sondern ein Verbund aus Komponenten und Bundles, gibt es zwar eine Version 1.3 des CMF an sich, die einzelnen Teile können aber davon unterschiedliche Versionen haben. Je nach Entstehungsgeschichte variieren diese von 1.0 bis 2.0. Weiterlesen

Erstellen einer flexiblen Projektstruktur für Symfony2 und AngularJS

Symfony2 im Backend und AngularJS im Frontend, das war die Wahl für ein internes Projekt zur Teamplanung bei meinem Praktikum im September/Oktober 2013.

Eine besondere Herausforderung von Zusammenfügen der beiden Frameworks, sodass sie angenehm miteinander harmonieren, da beide ihr eigenes Routing mitbringen.
Soll hier Symfony das Routing übernehmen oder soll AngularJS das alles regeln? Brauche ich eine spezielle Webserverkonfiguration?

In diesem Artikel möchte ich beschrieben, wie die Projektstruktur aussehen muss, damit Symfony2 und AngularJS bequem zusammen spielen und es keine Kompilkationen mit Updates und dem Deployment gibt. Weiterlesen

Development Environments with Vagrant and Puppet

Motivation

Setting up the infrastructure for new projects can be quite a pain in the ***. Even after the initial setup is done, adding new developers to the team requires a lot of time. Besides explaining the project to the new team member, the project’s development environment has to be installed on the new developer’s computer. This includes setting up virtual machines, web- and database-servers, updating libraries etc.

Many IT companies use the same technologies repeatedly which leaves them with multiple development environments that look very similar but have been set up separately. This problem can be solved by using a configuration management software and a smart tool for handling virtual machines.

Weiterlesen

ACLs and Symfony2

Like most larger PHP frameworks, Symfony2 contains a component that handles all kinds of security topics. Its main two capabilities are authentication and authorization. While making it easy to implement these concepts, the component separates them and executes one after the other. In the first step, the framework determines who the current user is or whether he is who he claims to be respectively (Authentication). Secondly, it evaluates whether he is allowed to perform a certain operation (Authorization).

This article focuses on authorization or – more accurately – Symfony2’s Access Control Lists (ACLs) and how they support the implementation of complex access right models.
Weiterlesen

Symfony2: Bundle your libraries!

In vielen Software-Projekten kommen Entwickler irgendwann an einen Punkt, an dem Funktionalität implementiert wird, die in anderen Projekten wiederverwendet werden können soll. Nachdem ich in der jüngeren Vergangenheit von mehreren Kollegen gefragt wurde, wie man dies in Symfony2-Projekten bewerkstelligen kann, wollte ich schriftlich eine Zusammenfassung der wichtigsten Punkte bereitstellen. Das Resultat ist dieser Blog-Artikel, der eine Schritt-für-Schritt-Anleitung enthält, wie man wiederverwendbaren Code kapselt und in einem eigenen Symfony2-Bundle bereitstellt.

Das Wissen, welches ich hier verpacke, habe ich teils aus der Symfony2-Dokumentation, teils aus der Erfahrung, welche ich in den letzten Jahren in Symfony2-Projekten gesammelt habe. Nachdem ich des Öfteren Library-Code aus Projekten ausgelagert hatte, konnte ich einige Patterns identifizieren und vor allem feststellen, dass diese Vorgehensweisen in Symfony2-Projekten (abgesehen von syntaktischen Eigenheiten) denen in beliebigen anderen Umgebungen sehr stark ähneln.

Die folgende Liste ist als Template zu verstehen, welches in einfachen Projekten genau so verwendet werden kann, in komplexeren jedoch wahrscheinlich erweitert werden muss. Weiterlesen

Content-Type Negotiation mit Symfony2

Die Mächtigkeit und Einfachheit des HTTP wird in vielerlei Hinsicht oft unterschätzt. Der folgende Artikel stellt einen Aspekt vor, bei dem genau dies der Fall ist: Die Aushandlung des Formats, in welchem Daten per HTTP transportiert werden. Leider wird in den allermeisten HTTP-Applikationen über das Format der Antwort nicht verhandelt. Es werden beispielsweise GET-Requests kategorisch mit HTML beantwortet, ob ein Newsfeed als Atom oder RSS geliefert wird, entscheidet ein URL-Parameter. Auch ist das Kriterium dafür, mit JSON oder XML zu antworten, nicht zu selten, ob auf die Ressource via XMLHTTPRequest zugegriffen wird. Hierbei halten sich selbst moderne HTTP-Applikationen kaum an den Standard.

Das Problem

Unser Anwendungsbeispiel ist eine Applikation, in der alle Daten sowohl in Form von HTML-Dokumenten als auch in JSON ausgeliefert werden können. Genau für solche Zwecke sieht das HTTP den Request-Header Accept vor. Ein HTTP-Client kann diesen nutzen, um dem Server mitzuteilen, welches Format er gerne in der Antwort vorfinden würde. Dabei kann er nicht nur ein einzelnes Format angeben, sondern auch mehrere und diese sogar priorisieren.

Weiterlesen