#php

How to create an internal URI in TYPO3

Sometimes you want to generate TYPO3 internal URIs programmatically. Now you could try to create the URL manually on your own, or use the UriBuilder class. This handy tool is pretty neat to create any kind of internal URI. In a controller this class is available by $this->getControllerContext()->getUriBuilder(). If you want to use the UriBuilder somewhere else, you need to load an instance of the class by the ObjectManager.

$objectManager = 
  GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\ObjectManager\ObjectManager::class);
$uriBuilder =
  $objectManager->get(\TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder::class);

When you have access to an instance of the builder, it's pretty straight forward from now on. The class has a bunch of simple setters, to control the generation of the URI. Best practice is to reset all the options of the builder on start of every new URI creation.

read more ...
Share:

Overwrite the default layout in TYPO3

I'm pretty sure that many people search for this thing already. So did I. It took me quite a lot time to figure out, how to overwrite the default template in TYPO3 8.7. This layout comes with some annoying wrappings, like the new frames. So you may want to remove them too. When you know how, it's really easy to do. Just add a small part to your TypoScript setup.

lib {
  contentElement {
    layoutRootPaths {
      10 = EXT:page/Resources/Private/Layouts
    }
  }
}
read more ...
Share:

PHP: yield is here!

Und gibt uns so viel mehr zurück ...

Was freue ich mich über das Feature in php 5.5: yield! Gut, klingt jetzt erst mal als Wort nicht sonderlich spannend. Es ist zugegeben auch nicht sehr umfangreich, aber für mich als Entwickler ist die Möglichkeit eine super Ergänzung.

Was macht man normalerweise, wenn man eine Liste an eine andere Funktion übergeben will? In gefühlt 98% der Fälle wird ein mit einer Schleife ein Array erstellt, in einem 1% macht man vielleicht ein Objekt draus und im übrigen Prozent der Fälle überlegt man es vielleicht doch anders zu machen. Der Nachteil ist natürlich generell, dass ein Array oder Objekt im Speicher liegt. Habe ich also Daten, die ich dann noch in ein Array/Object umpacke, um es in einem bestimmten Format an eine andere Funktion zu übergeben, habe ich gleich wieder neue Daten im Speicher liegen. Und jetzt kommt yield ins Spiel!

Mit der neuen Rückgabeart kann prinzipiell return ersetzt werden, yield gibt dann sequenziell Daten zurück. In Schleifen verwendet können so einfach, und vor allem ohne den Speicher zu belasten, Daten zurückgegeben und weiter verarbeiten.

read more ...
Share:

Arduino Webserver

Installation von php5 mit JSON & Sessions auf dem Arduino Yún

Ich muss es eingestehen: ich bin kein großer Freund von Python. Es ist zwar auf dem Yún vorinstalliert und läuft auch, aber für meine Anwendungen war es irgendwie nicht das richtige. Da fühle ich mich bei php schon mehr zuhause. Glücklicher weiße kommt Linino schon direkt mit opkg und ermöglicht so eine schnelle Installation von php.

Nach etwas Recherche habe ich die Befehle schnell gefunden. Hier also festgehalten für mich und die Nachwelt, alles um php5 auf dem Yún zum Laufen zu bringen. Und das sogar ohne jeden Neustart. ;)

read more ...
Share:

Logger in Zend Framework 2 über Modul Config erstellen

Wer das Zend Framework kennt wird vermutlich auch schon Kontakt mit Zend\Log und dem Thema logging gehabt haben. Mit dem ZF2 wurden viele Dinge verändert und auch der Logger blieb davon nicht verschont. Leider lässt aber die Dokumentation aktuell noch zu wünschen übrig. Wer eine Logger-Instanz über die Modul-Config (modul.config.php) erstellen will, wird vermutlich das gleiche Problem wie ich bekommen, dass man keine wirklichen Informationen dazu findet. Die Optionen für ein Config-Array sind einfach nicht ausreichend erklärt oder überhaupt aufgeführt.

Nachdem ich die diversen Dateien aus dem Zend\Log durchgesehen habe, konnte ich weitgehend die Konfiguration nachstellen. Somit ist es im Endeffekt leicht möglich eine Instanz des Loggers komplett in der Konfigurationsdatei zu erstellen, ohne irgendwelche Einstellungen hardcoded abzulegen; wenn man weiß wie. :)

read more ...
Share: