Das AsseticBundle ist ein Wrapper um Assetic, ein geniales Tool, um statische Assets für Webprojekte zu verwalten. AsseticBundle ist extrem einfach zu verwenden, einfach die entsprechende Filter-Chain via yaml konfigurieren, um mehr muss man sich nicht kümmern. Natürlich allerdings müssen die zugrundeliegenden Abhängigkeiten im Vorfeld installiert sein. In unserem Falle benötigen wir den Yui-Compressor als jar-File und Less CSS. Less ist ein node.js Modul, was bedingt, dass wir zuvor node.js installieren müssen.
Continue reading “[Symfony 2] AsseticBundle, Less CSS & YUI Compressor unter OSX installieren”
PHP odds! today: pass by reference traps
This is dangerous:
//example array $array = array('a' => array(array(243,453,435,232))); foreach ($array['a'] as &$value) { $value[3] = $newvalue; }
This works, but now the $value var is in the array by reference which can lateron lead to:
Notice: Array to string conversion
EDIT:
see below in the comments for when…
This works better:
[Symfony 2] Security Bundle: Set User Locale on Form Login
[UPDATE]
A recent update to this article may be found here: https://nerdpress.org/symfony-2-set-default-locale-on-form-login-2/
Das Security Bundle ist ein wenig magisch. Da muss man eine HTML-Form definieren, der Rest wird irgendwie konfiguriert (Namen der Post-Parameter wie “_username”, “_password” etc., den Redirect zum Referrer, Remember-Me Funktion und so weiter, das alles wird von der Firewall intern geregelt. Man muss nur eine Login-Route definieren, einen Stub-Controller + Action-Callable (der aber nie ausgeführt wird, weil die Firefall sich davorhängt), fertig.
Das ist angenehm einfach, solange man keine Fragen stellt. Aber wie führe ich zusätzliche Aktionen direkt nach erfolgtem Login aus, ohne Einfuss auf den Code des Security Bundles zu haben?
Continue reading “[Symfony 2] Security Bundle: Set User Locale on Form Login”
[Symfony 2] Security Bundle – Benutzer mit username oder email anmelden.
Augenscheinlich unterstützt das Security-Module nur die Authentifizierung via Benutzername und Password. Wie man sich mit einem Benutzernamen ODER der E-Mail-Adresse und einem Password authentifiziert, ist ein wenig versteckt. So gehts:
Continue reading “[Symfony 2] Security Bundle – Benutzer mit username oder email anmelden.”
Lighttpd, Plesk und PHP
Will man auf seinem Server(debian) Lighttpd paralell zu Plesk’s Apache zum laufen kriegen sollte man auf jeden fall PHP als FPM laufen lassen.
Das kommt sich nicht mit dem von Plesk und Apache regierten PHPs in die Quere und ist sowieso schneller und kann auch die Prozesse killen und neuladen.
Falls man mal was in der ini ändern will.
FPM installieren geht so, wie er es dort beschreibt:
Allerdings in der conf den Port nicht als String, sondern numeric:
server.modules += ( "mod_fastcgi" ) ## Start an FastCGI server for php (needs the php5-cgi package) fastcgi.server = ( ".php" => ( "localhost" => ( "host" => "127.0.0.1", "port" => 9000 )) )
Bleibt noch das Problem mit dem APC Konflikt, falls da jemand eine Lösung weiß, nur her damit.
Man, das war ein kampf ;)
Mal sehen wie lang das hält…
symfony 1.4 installer
Ich hab mal einen symfony 1.4 installer shell script auf github gepackt.
Damit kann man “ruckizucki” auf Ubuntu ein lokales symfony 1.4 Projekt aufsetzen.
Es ist ein fork von einem virtualhost create script und macht folgendes:
-
– holt den letzten symfony 1.4 stable release via svn
– setzt alle notwendigen rechte zB auf den cache folder
– bereitet die datenbank vor
– legt eine app an
– macht eine .gitignore
– und ruft das virtualhost creator script auf, was den vhost anlegt auf “web”
Symfony 2 wird super. Oder …?
Natürlich wird Symfony 2 super. Die Dokumentation ist wie gewohnt zum jetzigen, frühen Zeitpunkt genial, die Architektur durchdacht, die Entwickler-Community steckt sowieso alles in die Tasche, man sieht einfach: Da steckt eine Menge Arbeit, Hirnschmalz und Erfahrung hinter. Aber genug geschleimt ;)
Mein Lieblingsthema ist ja zur Zeit der Dependency Injection Container. Und irgendwie stinkt mir die ganze Container-Konfiguration noch gewaltig. Meine kläglichen Versuche, selbst mal so was ähnliches wie eine brauchbare Autowiring-Implementierung herunterzubrechen, waren natürlich auch bzw. erst recht nicht der große Wurf – was vor allem daran lag, dass ich den Service Container und damit den ganzen Sinn und Zweck des Ganzen einfach mal wegrationalisiert hatte – Loose Coupling sieht natürlich anders aus, das sei den Kritikern zugestanden. Ich verteidige mich mal dadurch, dass ich eigentlich nur mal mit Mixins rumspielen wollte – da hab’ ich wohl die eine oder andere Begrifflichkeit durcheinander geworfen.
Aber um mal zu des Pudels Kern zu kommen: Ist es wirklich so geil, mit kilometerlangen XML-Dateien, ‘ner Menge Initialisierungscode und ohne mit der heißgeliebten Code-Completion in der IDE meiner Wahl ein Paradigma zu kaufen, das im speziellen Anwendungskontext – nicht im Framework-Kontext – eher selten Anwendung findet?
Distinct in Doctrine
Wenn man DISTINCT in einem Query und Doctrine nutzen will muss man mit Aliasen arbeiten!
Sonst baut Doctrine einem da immer die id mit in den Query und das DISTINCT wird damit ausgehebelt.
sfGoogleTranslatePlugin
Hallo Welt!
Ich hab einen kleinen Wrapper für die Google Translate API v1 als symfony 1.4 Plugin auf github gehoben:
https://github.com/ivoba/sfGoogleTranslate
Einfach Plugin installieren und dann im Model oder wo es gebraucht wird:
$gT = new sfGoogleTranslate('de','fr'); $t = $gT->translate('Hallo schöne Frau'); echo $t;
[symfony 1.4] Class ‘sfLoader’ not found
Sollte man mal eine symfony 1.2.x Anwendung auf symfony 1.4.x migrieren und man stößt auf diesen Fehler:
Class 'sfLoader' not found
Dann hat man versucht einen Helper in der Action zu laden zB so:
sfLoader::loadHelpers('String');
Der sfLoader ist in 1.4 allerdings entfernt worden.
Stattdessen sollte man dann sowas schreiben:
$this->getContext()->getConfiguration()->loadHelpers('String');
Dann klappts.