[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.

symfony und Google Analytics

Ich weiss nicht ob Ihr es wußtet:
Es gibt ein feines Plugin für Google Analytics für symfony.
Kris Wallsmith sei dank.

Da kann man sich fragen, warum denn ein Plugin dafür?
Die paar Zeilen Code kopier ich doch schnell ins Layout.
Über das Plugin kann man jedoch Analytics “environment aware” einbinden.
Man will ja nicht das die Test- oder gar Entwicklungsumgebung die Messung verfälscht.

Continue reading “symfony und Google Analytics”

symfony 1.4 – automatisierte builds

Hier mal ein Beispiel für einen (via shell script) automatisierten build bei einer PHP, Symfony 1.4 Anwendung mit GIT zur Versionskontrolle.

#wipe old version of build db
mysql -uUSER -pPW drop build-db
#wipe the build workspace
rm -rf ./build-workspace
#checkout the sourcecode
git clone git@my-domain.com:my-repository ./build-workspace
cd build-workspace

Continue reading “symfony 1.4 – automatisierte builds”

Symfony 2 PR3: doctrine:schema:create liefert “No Metadata Classes to process.”

Die Doku stellt in Aussicht, dass man den “normalen” Doctrine-Namespace-Shortcut benutzen kann, also bspw. @Entity anstelle von @DoctrineOrmMappingEntity. Funktioniert aber nicht, weil in irgend einer Service-Configuration dieser Namespace auf einen Alias gemapped wird, der da lautet “orm”. Die Syntax lautet aber nun auch nicht @ormEntity, sondern @orm:Entity. Schreibt man sein Model also bspw. so:

<?php
namespace ApplicationHelloBundleEntity;
/**
* ApplicationHelloBundleEntityUser
*
* @orm:Table(name="users")
* @orm:Entity
*/
class User
{
/**
* @var integer $id
*
* @orm:Column(name="id", type="integer")
* @orm:Id
* @orm:GeneratedValue(strategy="AUTO")
*/
protected $id;

sollten alle CLI-Tasks auch wunderbar funktionieren. Es bleibt zu hoffen, dass die DI-Services eine reichhaltige Parameter-Dokumentation spendiert kriegen und das ganze Bundle-System eine transparente, dokumentierte API erhalten (wo zum Teufel liegt in der Sandbox bitte der versprochene Doctrine-Controller?)

Die Einstellung findet sich übrigens in der Service-Configuration unter src/vendor/symfony/src/Symfony/Bundle/DoctrineBundle/Resources/config/orm.xml:

<service id="doctrine.orm.metadata_driver.annotation.reader" class="%doctrine.orm.metadata.annotation_reader_class%">
<call method="setAnnotationNamespaceAlias">
<argument>DoctrineORMMapping</argument>
<argument>orm</argument>
</call>
</service>

Ist leicht zu finden, wenn man weiß, wonach man suchen muss. Ich denke, es ist am einfachsten, die Service-Definition des DI-Containers an entsprechender Stelle an seine eigenen Bedürfnisse anzupassen. Wie das zuverlässig und projektübergreifend funktioniert, erkläre ich vielleicht mal, wenn ich’s selbst gerafft hab.

Achso, hier noch der Nebensatz (etwas herunter scrollen), in dem gesagt wird, das Jonathan irgendwann mal das “orm:” Präfix einführt. Symfony 2 ist definitiv noch nicht ready for production (was aber auch niemand behauptet).

Dependency Injection mit Symfony 1.x

Durch meine ersten Gehversuche mit Grails sowie einen interessanten Vortrag über JSF2 bin ich kürzlich über das Kürzel “IoC” gestoßen. Das ganze ist vom Prinzip her recht einfach und in Grails, das im Grunde ein stinknormales MVC-Pattern implementiert, konkret gelöst, indem man durch eine Namenskonvention am Controller automatisch sogenannte Services instanziiert.

Continue reading “Dependency Injection mit Symfony 1.x”

Ein symfony Projekt in git

Neulich habe ich mal ein Projekt von SVN auf git umgezogen.
Ähnlich wie bei SVN muss auch hierbei das Projekt ein bißchen vorbereitet werden damit die Versionierung
das macht was sie soll.
Das Projekt wird in Eclipse bearbeitet, also wird auch hier drauf Rücksicht genommen.

Alles was man beachten muss ist eigentlich nur die ignores für git richtig zu setzen.
Hier mal meine Ignore List:

Continue reading “Ein symfony Projekt in git”