Zend_Filter PregReplace in ini-Config

Heute hatte ich das Problem, dass die Config für ein Zend_Form-Formular in einer ini-Datei stehen musste. Dabei sollte auch PregReplace zum Einsatz kommen, um nichtgewollte Worte gegen Sternchen auszutauschen. Es gibt aber scheinbar kein Tutorial oder Beispiel für die Einbindung von Filtern per ini-Datei, bei denen man dem Filter Optionen hinzufügen kann. Man findet immer nur einfache Filter-Einbindungen ohne Optionen wie

[code lang=”bash” inline=”yes”]elements.nachricht.options.filters.bigger.filter = “StringToUpper”[/code]

zum Vergrößern aller Buchstaben.

Durch einiges Probieren mit den Kollegen und Durchforsten der Zend_Filter-Library, kamen wir dann auf folgendes:

[code lang=”bash” inline=”yes”]elements.nachricht.options.filters.badword.filter = “PregReplace”
elements.nachricht.options.filters.badword.options.match = “/(\bpoo\b|\bfuck\b|\bsuck\b)/i”
elements.nachricht.options.filters.badword.options.replace = “*****”[/code]

Man muss also nach dem selbstgewählten Namen des Filters, in meinem Fall “badword”, den verwendeten Filter mit “.filter” einbinden. Die Optionen werden mit “.options” ebenfalls direkt nach “badword” eingebracht. In der Option “match” steht dabei ein regulärer Ausdruck mit dem zu filternden Format und in “replace” die dafür vorgesehene Zeichenkette als Ersatz für die gefundenen Worte. “\b” markiert Wortanfänge und -enden. “i” steht dabei als caseinsensitive, also werden Groß- und Kleinschreibung ignoriert. Die Trennung der bösen Worte erfolgt per “|”.

CamelCase mit Bindestrich und umgekehrt in Zend Framework

Ich hatte gestern das Problem, dass in unserem Zend Framework Projekt die Actions in CamelCase geschrieben sind, also zum Beispiel:

[code lang=”php” inline=”no”]public function editUserAccountAction()[/code]

In der Navigation, im Routing und in der ACL stehen diese aber ohne CamelCase und mit Bindestrich drin, also nach obigen Beispiel:

[code parse=”no” inline=”no”]http://www.domain.com/irgendwas/edit-user-account/[/code]

In der ACL wie folgt.

[code lang=”php” inline=”no”]$acl->deny(‘guest’, array(‘irgendwas’), array(‘edit-user-account’));[/code]

Nun hab ich eine Rechteverwaltung geschrieben, welche die Actions anhand der Controller aus der Datei ausliest und bei Erlaubnis des Users vergleicht. Das Problem dabei ist, dass edit-user-account, wie es in der ACL steht, und editUserAccount, wie es aus dem Controller ausgelesen wird, im Vergleich immer false, also ungültig bzw falsch,  zurückgeben. Das Problem habe ich dadurch umgangen, indem ich einen Filter auf den ausgelesenen Actionnamen angewendet habe. Genauer den Zend_Filter_Word_CamelCaseToDash(). Darüber habe ich noch einen strtolower() laufen lassen, um auch vorhandene Großbuchstaben in kleine ändern zu lassen.

[code lang=”php” inline=”no”][…]
$ausgelesenerName = ‘editUserAccount’;
$filter = new Zend_Filter_Word_CamelCaseToDash();
$bereinigterName = strtolower($filter->filter($ausgelesenerName));
[…][/code]

[via /dev/notes ]

Zend Framework mit XAMPP und vhosts unter Windows

Heute will ich euch zeigen, wie ihr unter Windows das Zend Framework, den XAMPP und verschiedene vhosts (Virtual Hosts) einrichtet. Das hat den Hintergrund, dass ich mehrere Test-Projekte auf Windows-Maschinen laufen habe und normalerweise bei einem einzelnen Projekt auf localhost arbeiten würde. Um nicht Unterverzeichnisse nutzen zu müssen, ist es sinnig verschiedene vhosts zu verwenden. So kann jedes Projekt unter seiner eigenen ‘Domain’ aufgerufen werden. Das Ganze funktioniert nur lokal!

Ich selbst nutze für dieses Tutorial hier Windows 7 Professional 64 bit, XAMPP 1.7.7 VC-9 Win32 und das Minimal-Package des Zend Frameworks in der Version 1.11.11. Ich gebe der Vollständigkeit halber auch das mit an, was ich selbst geändert und geschrieben habe, um dieses Tutorial zu erstellen.  Continue reading “Zend Framework mit XAMPP und vhosts unter Windows”